Sophie

Sophie

distrib > Mandriva > 2007.0 > i586 > by-pkgid > ad1ba1135a9c9eeffc2e538163e00373 > files > 276

libCommonC++2_1.4-devel-1.4.1-1mdv2007.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>GNU CommonC++: ost::SerialService Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.6 -->
<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 id="current"><a href="classes.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
    <li><a href="examples.html"><span>Examples</span></a></li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
    <li><a href="annotated.html"><span>Class&nbsp;List</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="nav">
<a class="el" href="namespaceost.html">ost</a>::<a class="el" href="classost_1_1_serial_service.html">SerialService</a></div>
<h1>ost::SerialService Class Reference</h1><!-- doxytag: class="ost::SerialService" --><!-- doxytag: inherits="ost::Thread,ost::Mutex" -->The <a class="el" href="classost_1_1_serial_service.html">SerialService</a> is a thead service object that is meant to service attached serial <a class="el" href="namespaceost.html#1a3b6738f6f759fcb52b544a4787cbb2">ports.Thread</a> pool service for serial ports.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="serial_8h-source.html">serial.h</a>&gt;</code>
<p>
<p>Inheritance diagram for ost::SerialService:
<p><center><img src="classost_1_1_serial_service.png" usemap="#ost::SerialService_map" border="0" alt=""></center>
<map name="ost::SerialService_map">
<area href="classost_1_1_thread.html" alt="ost::Thread" shape="rect" coords="0,0,111,24">
<area href="classost_1_1_mutex.html" alt="ost::Mutex" shape="rect" coords="121,0,232,24">
</map>
<a href="classost_1_1_serial_service-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_serial_service.html#66efc4ea33b87c147ab0a207eb35a208">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="#66efc4ea33b87c147ab0a207eb35a208"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_serial_service.html#976999ced6e562ef85e13482c4a62667">SerialService</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 serial ports.  <a href="#976999ced6e562ef85e13482c4a62667"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_serial_service.html#51858284192f8089ab3cdda7eb431a0c">~SerialService</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Terminate the service thread and update attached objects.  <a href="#51858284192f8089ab3cdda7eb431a0c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_serial_service.html#9b613f73f7222745076f9f78aff7c78c">getCount</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get current reference count.  <a href="#9b613f73f7222745076f9f78aff7c78c"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_serial_service.html#39e53b68c6108d78ac3afea01d7cba05">onUpdate</a> (unsigned char flag)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A virtual handler for processing user defined update requests (1-254) which have been posted through Update.  <a href="#39e53b68c6108d78ac3afea01d7cba05"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_serial_service.html#857ecbd9c831d019400b5d9e9a02a6ac">onEvent</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A virtual handler for event loop calls.  <a href="#857ecbd9c831d019400b5d9e9a02a6ac"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_serial_service.html#eb873fd33e21aeebf78cb291a170fe27">onCallback</a> (<a class="el" href="classost_1_1_serial_port.html">SerialPort</a> *port)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A virtual handler for adding support for additional callback events into <a class="el" href="classost_1_1_serial_port.html">SerialPort</a>.  <a href="#eb873fd33e21aeebf78cb291a170fe27"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classost_1_1_serial_service.html#84d7b24f575569e86cb63b1f8c62e84a">SerialPort</a></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The <a class="el" href="classost_1_1_serial_service.html">SerialService</a> is a thead service object that is meant to service attached serial <a class="el" href="namespaceost.html#1a3b6738f6f759fcb52b544a4787cbb2">ports.Thread</a> pool service for serial ports. 
<p>
Multiple pool objects may be created and multiple serial ports may be attached to the same thread of of execution. This allows one to balance threads and the serial ports they service.<p>
The TTYPort and TTYService classes are used to form thread-pool serviced serial I/O protocol sets. These can be used when one has a large number of serial devices to manage, and a single (or limited number of) thread(s) can then be used to service the tty port objects present. Each tty port supports a timer control and several virtual methods that the service thread can call when events occur. This model provides for "callback" event management, whereby the service thread performs a "callback" into the port object when events occur. Specific events supported include the expiration of a TTYPort timer, pending input data waiting to be read, and "sighup" connection breaks.<p>
<dl compact><dt><b>Author:</b></dt><dd>David Sugar &lt;<a href="mailto:dyfet@ostel.com">dyfet@ostel.com</a>&gt; </dd></dl>

<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="976999ced6e562ef85e13482c4a62667"></a><!-- doxytag: member="ost::SerialService::SerialService" ref="976999ced6e562ef85e13482c4a62667" args="(int pri=0, size_t stack=0, const char *id=NULL)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">ost::SerialService::SerialService           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">int&nbsp;</td>
          <td class="mdname" nowrap> <em>pri</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>size_t&nbsp;</td>
          <td class="mdname" nowrap> <em>stack</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname" nowrap> <em>id</em> = <code>NULL</code></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></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 serial ports. 
<p>
The thread begins execution with the first attached port.<p>
<dl compact><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>stack ID. </td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a class="anchor" name="51858284192f8089ab3cdda7eb431a0c"></a><!-- doxytag: member="ost::SerialService::~SerialService" ref="51858284192f8089ab3cdda7eb431a0c" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">virtual ost::SerialService::~SerialService           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Terminate the service thread and update attached objects. 
<p>
    </td>
  </tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="9b613f73f7222745076f9f78aff7c78c"></a><!-- doxytag: member="ost::SerialService::getCount" ref="9b613f73f7222745076f9f78aff7c78c" args="(void)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int ost::SerialService::getCount           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [inline]</code></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 lead used service handler from a pool.<p>
<dl compact><dt><b>Returns:</b></dt><dd>count of active ports. </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="eb873fd33e21aeebf78cb291a170fe27"></a><!-- doxytag: member="ost::SerialService::onCallback" ref="eb873fd33e21aeebf78cb291a170fe27" args="(SerialPort *port)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">virtual void ost::SerialService::onCallback           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classost_1_1_serial_port.html">SerialPort</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>port</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [protected, virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
A virtual handler for adding support for additional callback events into <a class="el" href="classost_1_1_serial_port.html">SerialPort</a>. 
<p>
<dl compact><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>serial port currently being evaluated. </td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a class="anchor" name="857ecbd9c831d019400b5d9e9a02a6ac"></a><!-- doxytag: member="ost::SerialService::onEvent" ref="857ecbd9c831d019400b5d9e9a02a6ac" args="(void)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">virtual void ost::SerialService::onEvent           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [protected, virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
A virtual handler for event loop calls. 
<p>
This can be used to extend event loop processing.     </td>
  </tr>
</table>
<a class="anchor" name="39e53b68c6108d78ac3afea01d7cba05"></a><!-- doxytag: member="ost::SerialService::onUpdate" ref="39e53b68c6108d78ac3afea01d7cba05" args="(unsigned char flag)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">virtual void ost::SerialService::onUpdate           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">unsigned char&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>flag</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [protected, virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
A virtual handler for processing user defined update requests (1-254) which have been posted through Update. 
<p>
<dl compact><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>of update request. </td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a class="anchor" name="66efc4ea33b87c147ab0a207eb35a208"></a><!-- doxytag: member="ost::SerialService::update" ref="66efc4ea33b87c147ab0a207eb35a208" args="(unsigned char flag=0xff)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">void ost::SerialService::update           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">unsigned char&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>flag</em> = <code>0xff</code>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></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>
This can also be used to pass requests to the OnUpdate() event handler.<p>
<dl compact><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>event for OnUpdate, termination, or reschedule. </td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<hr><h2>Friends And Related Function Documentation</h2>
<a class="anchor" name="84d7b24f575569e86cb63b1f8c62e84a"></a><!-- doxytag: member="ost::SerialService::SerialPort" ref="84d7b24f575569e86cb63b1f8c62e84a" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">friend class <a class="el" href="classost_1_1_serial_port.html">SerialPort</a><code> [friend]</code>          </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="serial_8h-source.html">serial.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon Jun 19 10:50:56 2006 for GNU CommonC++ by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
</body>
</html>