Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 68d373e54fb21da3730c08bede406633 > files > 337

libCommonC++1.9_3-devel-1.9.4-2mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>SocketService class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.2.5 on Thu Oct 4 15:33:01 2001 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>SocketService  Class Reference</h1>The SocketService is a thread pool object that is meant to service attached socket ports. <a class="el" href="class_thread.html">Thread</a> pool service object for socket ports. 
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="socket_h-source.html">socket.h</a>&gt;</code>
<p>
<p>Inheritance diagram for SocketService:
<p><center><img src="class_socketservice.gif" usemap="#SocketService_map" border="0"></center>
<map name="SocketService_map">
<area href="class_thread.html" alt="Thread" shape="rect" coords="0,0,94,24">
<area href="class_mutex.html" alt="Mutex" shape="rect" coords="104,0,198,24">
</map>
<a href="class_socketservice-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="class_socketservice.html#a0">Update</a> (unsigned char flag=0xff)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>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.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_socketservice.html#a1">SocketService</a> (int pri=0)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Create a service thread for attaching socket ports.</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_socketservice.html#a2">~SocketService</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Terminate the thread pool and eliminate any attached socket ports.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="class_socketservice.html#a3">getCount</a> (void) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Get current reference count.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_socketservice.html#b0">OnUpdate</a> (unsigned char buf)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Handles all requests other than "termination".</em> <a href="#b0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_socketservice.html#b1">OnEvent</a> (void)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Called once each time the service thread is rescheduled.</em> <a href="#b1">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_socketservice.html#b2">OnCallback</a> (<a class="el" href="class_socketport.html">SocketPort</a> *port)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Called for each port that is being processed in response to an event.</em> <a href="#b2">More...</a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Friends</h2></td></tr>
<tr><td nowrap align=right valign=top>class &nbsp;</td><td valign=bottom><a class="el" href="#l0">SocketPort</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The SocketService is a thread pool object that is meant to service attached socket ports. <a class="el" href="class_thread.html">Thread</a> pool service object for socket ports.
<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 compact><dt>
<b>Author(s): </b><dd>
 David Sugar &lt;<a href="mailto:dyfet@ostel.com">dyfet@ostel.com</a>&gt; </dl>
<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a name="a1" doxytag="SocketService::SocketService"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
SocketService::SocketService (
          </b></td>
          <td valign="bottom"><b>
int <em>pri</em> = 0&nbsp;)
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Create a service thread for attaching socket ports.
<p>
The thread begins execution with the first attached socket.<dl compact><dt>
<b>Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pri</em>
&nbsp;</td><td>
 of this thread to run under. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="a2" doxytag="SocketService::~SocketService"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
SocketService::~SocketService (
          </b></td>
          <td valign="bottom"><b>
)
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Terminate the thread pool and eliminate any attached socket ports.
<p>
    </td>
  </tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a name="b2" doxytag="SocketService::OnCallback"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void SocketService::OnCallback (
          </b></td>
          <td valign="bottom"><b>
<a class="el" href="class_socketport.html">SocketPort</a> * <em>port</em>&nbsp;)<code> [inline, protected, virtual]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Called for each port that is being processed in response to an event.
<p>
This can be used to add additional notification options during callback in combination with <a class="el" href="class_socketservice.html#a0">Update</a>().<dl compact><dt>
<b>Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>SocketPort</em>
&nbsp;</td><td>
 who's callback events are being evaluated. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="b1" doxytag="SocketService::OnEvent"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void SocketService::OnEvent (
          </b></td>
          <td valign="bottom"><b>
void&nbsp;)<code> [inline, protected, virtual]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Called once each time the service thread is rescheduled.
<p>
This is called after the mutex is locked and can be used to slip in additional processing.     </td>
  </tr>
</table>
<a name="b0" doxytag="SocketService::OnUpdate"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void SocketService::OnUpdate (
          </b></td>
          <td valign="bottom"><b>
unsigned char <em>buf</em>&nbsp;)<code> [inline, protected, virtual]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Handles all requests other than "termination".
<p>
<dl compact><dt>
<b>Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>request</em>
&nbsp;</td><td>
 id as posted from <a class="el" href="class_socketservice.html#a0">Update</a>(). </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="a0" doxytag="SocketService::Update"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void SocketService::Update (
          </b></td>
          <td valign="bottom"><b>
unsigned char <em>flag</em> = 0xff&nbsp;)
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>
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="class_socketservice.html#b0">OnUpdate</a>() handler.<dl compact><dt>
<b>Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>Update</em>
&nbsp;</td><td>
 flag value. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="a3" doxytag="SocketService::getCount"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
int SocketService::getCount (
          </b></td>
          <td valign="bottom"><b>
void&nbsp;) const<code> [inline]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get current reference count.
<p>
This can be used when selecting the least used service handler from a pool.
<p>
<dl compact><dt>
<b>Returns: </b><dd>
 count of active ports. </dl>    </td>
  </tr>
</table>
<hr><h2>Friends And Related Function Documentation</h2>
<a name="l0" doxytag="SocketService::SocketPort"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
class SocketPort<code> [friend]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="socket_h-source.html">socket.h</a></ul>
<hr><address><small>Generated at Thu Oct 4 15:33:01 2001 for CommonC++ by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.gif" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.5 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
 &copy;&nbsp;1997-2001</small></address>
</body>
</html>