Sophie

Sophie

distrib > Fedora > 18 > x86_64 > by-pkgid > b3a1f4d91c26f535919e39e25606614a > files > 2068

wt-doc-3.2.3-1.fc18.noarch.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>Wt: Wt::WSocketNotifier Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Wt
   &#160;<span id="projectnumber">3.2.3</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</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>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespaceWt.html">Wt</a>      </li>
      <li class="navelem"><a class="el" href="classWt_1_1WSocketNotifier.html">WSocketNotifier</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">Wt::WSocketNotifier Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="Wt::WSocketNotifier" --><!-- doxytag: inherits="Wt::WObject" -->
<p>A utility class for asynchronous notification of socket activity.  
 <a href="classWt_1_1WSocketNotifier.html#details">More...</a></p>

<p><code>#include &lt;Wt/WSocketNotifier&gt;</code></p>
<div class="dynheader">
Inheritance diagram for Wt::WSocketNotifier:</div>
<div class="dyncontent">
<div class="center"><img src="classWt_1_1WSocketNotifier__inherit__graph.png" border="0" usemap="#Wt_1_1WSocketNotifier_inherit__map" alt="Inheritance graph"/></div>
<map name="Wt_1_1WSocketNotifier_inherit__map" id="Wt_1_1WSocketNotifier_inherit__map">
<area shape="rect" href="classWt_1_1WObject.html" title="A base class for objects that participate in the signal/slot system." alt="" coords="27,5,123,32"/></map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classWt_1_1WSocketNotifier-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548c">Type</a> { <a class="el" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548ca057d53943ca8e7e9381526747c689d1c">Read</a>, 
<a class="el" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548ca85abb8bd7445d145faa84c8545b1d5f4">Write</a>, 
<a class="el" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548ca17c50ed02a1f9aa67ece3d5e71b66141">Exception</a>
 }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumeration that event type.  <a href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548c">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WSocketNotifier.html#ae60a2f36b909f50404bfb15864562347">WSocketNotifier</a> (int socket, <a class="el" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548c">Type</a> type, <a class="el" href="classWt_1_1WObject.html">WObject</a> *parent=0)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new socket notifier.  <a href="#ae60a2f36b909f50404bfb15864562347"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff88999b1c55254f8b129193a53ee485"></a><!-- doxytag: member="Wt::WSocketNotifier::~WSocketNotifier" ref="aff88999b1c55254f8b129193a53ee485" args="()" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WSocketNotifier.html#aff88999b1c55254f8b129193a53ee485">~WSocketNotifier</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a1bde7ddf5a3bdde74906343027e355"></a><!-- doxytag: member="Wt::WSocketNotifier::socket" ref="a3a1bde7ddf5a3bdde74906343027e355" args="() const " -->
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WSocketNotifier.html#a3a1bde7ddf5a3bdde74906343027e355">socket</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the socket. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42d21d0c22cdf3b3ed7ee10dbdc82aed"></a><!-- doxytag: member="Wt::WSocketNotifier::type" ref="a42d21d0c22cdf3b3ed7ee10dbdc82aed" args="() const " -->
<a class="el" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548c">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WSocketNotifier.html#a42d21d0c22cdf3b3ed7ee10dbdc82aed">type</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the event type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WSocketNotifier.html#a9cb21fa4b5827a205b21f9b656baca6d">setEnabled</a> (bool enabled)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disable the notifier.  <a href="#a9cb21fa4b5827a205b21f9b656baca6d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a893c8fcee0191bb2ae56df27697f8f7c"></a><!-- doxytag: member="Wt::WSocketNotifier::isEnabled" ref="a893c8fcee0191bb2ae56df27697f8f7c" args="() const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WSocketNotifier.html#a893c8fcee0191bb2ae56df27697f8f7c">isEnabled</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns if the notifier is enabled. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classWt_1_1Signal.html">Signal</a>&lt; int &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WSocketNotifier.html#acf78fc846ca6f915111533575dcc9401">activated</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal indicating an event.  <a href="#acf78fc846ca6f915111533575dcc9401"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>A utility class for asynchronous notification of socket activity. </p>
<p>Use a aocket notifier to integrate listening for socket events into the Wt event loop. In this way, you do not need a separate thread to listen for socket activity. Socket activity is either the availability of data to be read (<a class="el" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548ca057d53943ca8e7e9381526747c689d1c">Read event</a>), possibility to write data (<a class="el" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548ca85abb8bd7445d145faa84c8545b1d5f4">Write event</a>), or an exception that occurred (<a class="el" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548ca17c50ed02a1f9aa67ece3d5e71b66141">Exception event</a>).</p>
<p>When an event on a socket is available, the notifier emits the <a class="el" href="classWt_1_1WSocketNotifier.html#acf78fc846ca6f915111533575dcc9401" title="Signal indicating an event.">activated()</a> signal. As in the case of a user interface event (like for example <a class="el" href="classWt_1_1WInteractWidget.html#ae11e050cce0d4a8f742afa3ef92bfe8c" title="Event signal emitted when a mouse key was clicked on this widget.">WInteractWidget::clicked()</a>), you will typically modify the widget tree in response to the event. But, unless you use a timer (<a class="el" href="classWt_1_1WTimer.html" title="A utility class which provides timer signals and single-shot timers.">WTimer</a>) or use server-initiated updates (see WApplication::triggerUpdates()), these changes are not propagated to the user interface, until the next user interface event.</p>
<p>Like other events, socket notification events are serial (not simultaneous), and there are no thread safety issues (you don't need to take the <a class="el" href="classWt_1_1WApplication_1_1UpdateLock.html" title="A RAII lock for manipulating and updating the application and its widgets outside of the event loop...">WApplication::UpdateLock</a>).</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="classWt_1_1WSocketNotifier.html" title="A utility class for asynchronous notification of socket activity.">Wt::WSocketNotifier</a> *notifier_;

 <span class="keywordtype">void</span> init() {
   ...
   <span class="keywordtype">int</span> sock = ...
   notifier_ = <span class="keyword">new</span> <a class="code" href="classWt_1_1WSocketNotifier.html#ae60a2f36b909f50404bfb15864562347" title="Creates a new socket notifier.">Wt::WSocketNotifier</a>(sock, <a class="code" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548ca057d53943ca8e7e9381526747c689d1c" title="Ready to read.">Wt::WSocketNotifier::Read</a>, <span class="keyword">this</span>);
   notifier_-&gt;<a class="code" href="classWt_1_1WSocketNotifier.html#acf78fc846ca6f915111533575dcc9401" title="Signal indicating an event.">activated</a>().connect(<span class="keyword">this</span>, &amp;HelloApplication::readData);
 }

 <span class="keywordtype">void</span> readData() {
   <span class="comment">// data is available on socket, or socket was closed by peer</span>
   <span class="keywordtype">char</span> buf[100];
   <span class="keywordtype">int</span> s = read(notifier_-&gt;<a class="code" href="classWt_1_1WSocketNotifier.html#a3a1bde7ddf5a3bdde74906343027e355" title="Returns the socket.">socket</a>(), buf, 99);

   <span class="keywordflow">if</span> (s &gt; 0) {
     ...
   } <span class="keywordflow">else</span> {
     <span class="comment">// closed by peer</span>
     notifier_-&gt;<a class="code" href="classWt_1_1WSocketNotifier.html#a9cb21fa4b5827a205b21f9b656baca6d" title="Enables or disable the notifier.">setEnabled</a>(<span class="keyword">false</span>);
     close(notifier_-&gt;<a class="code" href="classWt_1_1WSocketNotifier.html#a3a1bde7ddf5a3bdde74906343027e355" title="Returns the socket.">socket</a>());
   }
 }
</pre></div><p><em>Note: At present, <a class="el" href="classWt_1_1WSocketNotifier.html" title="A utility class for asynchronous notification of socket activity.">WSocketNotifier</a> works only in conjunction with the wthttpd connector, and not when using the FastCGI connector.</em> </p>
</div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a5be2fe0fe94d449a0d6b1ac77f7b548c"></a><!-- doxytag: member="Wt::WSocketNotifier::Type" ref="a5be2fe0fe94d449a0d6b1ac77f7b548c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548c">Wt::WSocketNotifier::Type</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Enumeration that event type. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a5be2fe0fe94d449a0d6b1ac77f7b548ca057d53943ca8e7e9381526747c689d1c"></a><!-- doxytag: member="Read" ref="a5be2fe0fe94d449a0d6b1ac77f7b548ca057d53943ca8e7e9381526747c689d1c" args="" -->Read</em>&nbsp;</td><td>
<p>Ready to read. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5be2fe0fe94d449a0d6b1ac77f7b548ca85abb8bd7445d145faa84c8545b1d5f4"></a><!-- doxytag: member="Write" ref="a5be2fe0fe94d449a0d6b1ac77f7b548ca85abb8bd7445d145faa84c8545b1d5f4" args="" -->Write</em>&nbsp;</td><td>
<p>Ready to write. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5be2fe0fe94d449a0d6b1ac77f7b548ca17c50ed02a1f9aa67ece3d5e71b66141"></a><!-- doxytag: member="Exception" ref="a5be2fe0fe94d449a0d6b1ac77f7b548ca17c50ed02a1f9aa67ece3d5e71b66141" args="" -->Exception</em>&nbsp;</td><td>
<p>Exception. </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ae60a2f36b909f50404bfb15864562347"></a><!-- doxytag: member="Wt::WSocketNotifier::WSocketNotifier" ref="ae60a2f36b909f50404bfb15864562347" args="(int socket, Type type, WObject *parent=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Wt::WSocketNotifier::WSocketNotifier </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classWt_1_1WSocketNotifier.html#a5be2fe0fe94d449a0d6b1ac77f7b548c">Type</a>&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classWt_1_1WObject.html">WObject</a> *&#160;</td>
          <td class="paramname"><em>parent</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a new socket notifier. </p>
<p>Create a new socket listener to listen for events of given <code>type</code> on a socket with file descriptor <code>socket</code>. The <a class="el" href="classWt_1_1WSocketNotifier.html" title="A utility class for asynchronous notification of socket activity.">WSocketNotifier</a> is enabled after construction. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="acf78fc846ca6f915111533575dcc9401"></a><!-- doxytag: member="Wt::WSocketNotifier::activated" ref="acf78fc846ca6f915111533575dcc9401" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classWt_1_1Signal.html">Signal</a>&lt;int&gt;&amp; Wt::WSocketNotifier::activated </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Signal indicating an event. </p>
<p>The signal is emitted when an event that was waited for is available. The signal argument is <a class="el" href="classWt_1_1WSocketNotifier.html#a3a1bde7ddf5a3bdde74906343027e355" title="Returns the socket.">socket()</a>. </p>

</div>
</div>
<a class="anchor" id="a9cb21fa4b5827a205b21f9b656baca6d"></a><!-- doxytag: member="Wt::WSocketNotifier::setEnabled" ref="a9cb21fa4b5827a205b21f9b656baca6d" args="(bool enabled)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::WSocketNotifier::setEnabled </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enabled</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Enables or disable the notifier. </p>
<p>By default, the socket notifier is enabled to receive events. When disabled, no events will be notified (as if the socket notifier didn't exist). </p>

</div>
</div>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr size="1"><address style="text-align: right; margin: 3px"><small>
Generated on Thu Nov 1 2012 for <a href="http://www.webtoolkit.eu/wt">the
C++ Web Toolkit (Wt)</a> by&nbsp;<a
href="http://www.doxygen.org/index.html"><img src="doxygen.png"
alt="doxygen" border="0" style="vertical-align: middle; display:
inline-block; height: 2em"></a> 1.7.5.1</small></address>
</body>
</html>