Sophie

Sophie

distrib > Mandriva > 2010.1 > x86_64 > media > main-updates > by-pkgid > f36f42783f75191f5f2d47f1e8c5504e > files > 350

lib64commoncpp-devel-1.8.0-5.1mdv2010.1.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GNU CommonC++: ost::SocketService Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespaceost.html">ost</a>::<a class="el" href="classost_1_1_socket_service.html">SocketService</a>
  </div>
</div>
<div class="contents">
<h1>ost::SocketService Class Reference</h1><!-- doxytag: class="ost::SocketService" --><!-- doxytag: inherits="ost::Thread,ost::Mutex" -->
<p>The <a class="el" href="classost_1_1_socket_service.html" title="The SocketService is a thread pool object that is meant to service attached socket...">SocketService</a> is a thread pool object that is meant to service attached socket ports.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="socketport_8h_source.html">socketport.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ost::SocketService:</div>
<div class="dynsection">
 <div class="center">
  <img src="classost_1_1_socket_service.png" usemap="#ost::SocketService_map" alt=""/>
  <map id="ost::SocketService_map" name="ost::SocketService_map">
<area href="classost_1_1_thread.html" alt="ost::Thread" shape="rect" coords="0,0,116,24"/>
<area href="classost_1_1_mutex.html" alt="ost::Mutex" shape="rect" coords="126,0,242,24"/>
</map>
 </div>
</div>

<p><a href="classost_1_1_socket_service-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_socket_service.html#ab43b58d6e7d8ce34e2906f3e79a25e69">update</a> (unsigned char flag=0xff)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Notify service thread that a port has been added or removed, or a timer changed, so that a new schedule can be computed for expiring attached ports.  <a href="#ab43b58d6e7d8ce34e2906f3e79a25e69"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_socket_service.html#a3a312fb56c00a0472fc0701898dc3ece">SocketService</a> (int pri=0, size_t stack=0, const char *id=NULL)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a service thread for attaching socket ports.  <a href="#a3a312fb56c00a0472fc0701898dc3ece"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_socket_service.html#a9a370cf56f889b416847cc8759a9b49c">~SocketService</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Terminate the thread pool and eliminate any attached socket ports.  <a href="#a9a370cf56f889b416847cc8759a9b49c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_socket_service.html#a870e3205e044e2862b9f17739ba8172c">getCount</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get current reference count.  <a href="#a870e3205e044e2862b9f17739ba8172c"></a><br/></td></tr>
<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_socket_service.html#a4914e4f6bfbab8c233244b7b44e52c86">onUpdate</a> (unsigned char buf)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Handles all requests other than "termination".  <a href="#a4914e4f6bfbab8c233244b7b44e52c86"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_socket_service.html#a206f1b02739f322cb38a33b0e409a32f">onEvent</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called once each time the service thread is rescheduled.  <a href="#a206f1b02739f322cb38a33b0e409a32f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_socket_service.html#a3a399c80d80b5d672dd01e273673dd33">onCallback</a> (<a class="el" href="classost_1_1_socket_port.html">SocketPort</a> *port)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called for each port that is being processed in response to an event.  <a href="#a3a399c80d80b5d672dd01e273673dd33"></a><br/></td></tr>
<tr><td colspan="2"><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_socket_service.html#a9884a27b35e263e19e4acf2cb06c4071">SocketPort</a></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>The <a class="el" href="classost_1_1_socket_service.html" title="The SocketService is a thread pool object that is meant to service attached socket...">SocketService</a> is a thread pool object that is meant to service attached socket ports. </p>
<p>Multiple pool objects may be created and multiple socket ports may be attached to the same thread of execution. This allows one to balance threads and sockets they service rather than either using a single thread for all connections or a seperate thread for each connection. Features can be added through supported virtual methods.</p>
<dl class="author"><dt><b>Author:</b></dt><dd>David Sugar &lt;<a href="mailto:dyfet@ostel.com">dyfet@ostel.com</a>&gt; <a class="el" href="classost_1_1_thread.html" title="Every thread of execution in an application is created by instantiating an object...">Thread</a> pool service object for socket ports. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd>
<p><a class="el" href="tcpservice_8cpp-example.html#_a3">tcpservice.cpp</a>.</p>
</dd>
</dl><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a3a312fb56c00a0472fc0701898dc3ece"></a><!-- doxytag: member="ost::SocketService::SocketService" ref="a3a312fb56c00a0472fc0701898dc3ece" args="(int pri=0, size_t stack=0, const char *id=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ost::SocketService::SocketService </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>pri</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>stack</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a service thread for attaching socket ports. </p>
<p>The thread begins execution with the first attached socket.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pri</em>&nbsp;</td><td>of this thread to run under. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>stack</em>&nbsp;</td><td>stack size. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>thread ID. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a9a370cf56f889b416847cc8759a9b49c"></a><!-- doxytag: member="ost::SocketService::~SocketService" ref="a9a370cf56f889b416847cc8759a9b49c" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual ost::SocketService::~SocketService </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Terminate the thread pool and eliminate any attached socket ports. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a870e3205e044e2862b9f17739ba8172c"></a><!-- doxytag: member="ost::SocketService::getCount" ref="a870e3205e044e2862b9f17739ba8172c" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ost::SocketService::getCount </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get current reference count. </p>
<p>This can be used when selecting the least used service handler from a pool.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>count of active ports. </dd></dl>

</div>
</div>
<a class="anchor" id="a3a399c80d80b5d672dd01e273673dd33"></a><!-- doxytag: member="ost::SocketService::onCallback" ref="a3a399c80d80b5d672dd01e273673dd33" args="(SocketPort *port)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ost::SocketService::onCallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classost_1_1_socket_port.html">SocketPort</a> *&nbsp;</td>
          <td class="paramname"> <em>port</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Called for each port that is being processed in response to an event. </p>
<p>This can be used to add additional notification options during callback in combination with <a class="el" href="classost_1_1_socket_service.html#ab43b58d6e7d8ce34e2906f3e79a25e69" title="Notify service thread that a port has been added or removed, or a timer changed,...">update()</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td><a class="el" href="classost_1_1_socket_port.html" title="The socket port is an internal class which is attached to and then serviced by a...">SocketPort</a> who's callback events are being evaluated. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a206f1b02739f322cb38a33b0e409a32f"></a><!-- doxytag: member="ost::SocketService::onEvent" ref="a206f1b02739f322cb38a33b0e409a32f" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ost::SocketService::onEvent </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Called once each time the service thread is rescheduled. </p>
<p>This is called after the mutex is locked and can be used to slip in additional processing. </p>

</div>
</div>
<a class="anchor" id="a4914e4f6bfbab8c233244b7b44e52c86"></a><!-- doxytag: member="ost::SocketService::onUpdate" ref="a4914e4f6bfbab8c233244b7b44e52c86" args="(unsigned char buf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ost::SocketService::onUpdate </td>
          <td>(</td>
          <td class="paramtype">unsigned char&nbsp;</td>
          <td class="paramname"> <em>buf</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Handles all requests other than "termination". </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>request id as posted from <a class="el" href="classost_1_1_socket_service.html#ab43b58d6e7d8ce34e2906f3e79a25e69" title="Notify service thread that a port has been added or removed, or a timer changed,...">update()</a>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab43b58d6e7d8ce34e2906f3e79a25e69"></a><!-- doxytag: member="ost::SocketService::update" ref="ab43b58d6e7d8ce34e2906f3e79a25e69" args="(unsigned char flag=0xff)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ost::SocketService::update </td>
          <td>(</td>
          <td class="paramtype">unsigned char&nbsp;</td>
          <td class="paramname"> <em>flag</em> = <code>0xff</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Notify service thread that a port has been added or removed, or a timer changed, so that a new schedule can be computed for expiring attached ports. </p>
<p>A "0" is used to terminate the service thread, and additional values can be specified which will be "caught" in the <a class="el" href="classost_1_1_socket_service.html#a4914e4f6bfbab8c233244b7b44e52c86" title="Handles all requests other than &quot;termination&quot;.">onUpdate()</a> handler.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>flag</em>&nbsp;</td><td>update flag value. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Friends And Related Function Documentation</h2>
<a class="anchor" id="a9884a27b35e263e19e4acf2cb06c4071"></a><!-- doxytag: member="ost::SocketService::SocketPort" ref="a9884a27b35e263e19e4acf2cb06c4071" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">friend class <a class="el" href="classost_1_1_socket_port.html">SocketPort</a><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="socketport_8h_source.html">socketport.h</a></li>
</ul>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Fri Nov 12 09:57:40 2010 for GNU CommonC++ by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>