<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>fastcgi++: Fastcgipp::Transceiver 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.5.6 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main 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> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="namespaceFastcgipp.html">Fastcgipp</a>::<a class="el" href="classFastcgipp_1_1Transceiver.html">Transceiver</a> </div> </div> <div class="contents"> <h1>Fastcgipp::Transceiver Class Reference</h1><!-- doxytag: class="Fastcgipp::Transceiver" -->Handles low level communication with "the other side". <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>></code> <p> <p> <a href="classFastcgipp_1_1Transceiver-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">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#f06e586f5a49dd694f2ae98398870721">handler</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">General transceiver handler. <a href="#f06e586f5a49dd694f2ae98398870721"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structFastcgipp_1_1Block.html">Block</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#5019405a5a05d60fdaa73d349cca58c0">requestWrite</a> (size_t size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Direct interface to <a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html#cf2cce1c96a7138adda98414f4e0d921" title="Request a write block in the buffer.">Buffer::requestWrite()</a>. <a href="#5019405a5a05d60fdaa73d349cca58c0"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#1a720bf113ad9781e59b0fc021988d29">secureWrite</a> (size_t size, <a class="el" href="structFastcgipp_1_1Protocol_1_1FullId.html">Protocol::FullId</a> id, bool kill)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Direct interface to <a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html#a1a80f3feb1355bd5bc57545d16c309e" title="Secure a write in the buffer.">Buffer::secureWrite()</a>. <a href="#1a720bf113ad9781e59b0fc021988d29"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#b8be64ba57bcef64d313960544400d6c">Transceiver</a> (int fd_, boost::function< void(<a class="el" href="structFastcgipp_1_1Protocol_1_1FullId.html">Protocol::FullId</a>, <a class="el" href="structFastcgipp_1_1Message.html">Message</a>)> sendMessage_)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#b8be64ba57bcef64d313960544400d6c"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#5c1bafc977eaa9e4c3e94a5b9eab59eb">sleep</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Blocks until there is data to receive or a call to <a class="el" href="classFastcgipp_1_1Transceiver.html#4dfd5de627b92f6bb5a834a68b20bb85" title="Forces a wakeup from a call to sleep().">wake()</a> is made. <a href="#5c1bafc977eaa9e4c3e94a5b9eab59eb"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#4dfd5de627b92f6bb5a834a68b20bb85">wake</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Forces a wakeup from a call to <a class="el" href="classFastcgipp_1_1Transceiver.html#5c1bafc977eaa9e4c3e94a5b9eab59eb" title="Blocks until there is data to receive or a call to wake() is made.">sleep()</a>. <a href="#4dfd5de627b92f6bb5a834a68b20bb85"></a><br></td></tr> <tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#54ffa1d25fed65ff61024ff8ce26a99b">transmit</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Transmit all buffered data possible. <a href="#54ffa1d25fed65ff61024ff8ce26a99b"></a><br></td></tr> <tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html">Buffer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#8656d4bd7359d7e12a9cc5921fc3a1d4">buffer</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Buffer for transmitting data <a href="#8656d4bd7359d7e12a9cc5921fc3a1d4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">boost::function< void(<a class="el" href="structFastcgipp_1_1Protocol_1_1FullId.html">Protocol::FullId</a>, <br> <a class="el" href="structFastcgipp_1_1Message.html">Message</a>)> </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#cc1090414ba4805db330e09a3f26178e">sendMessage</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Function to call to pass messages to requests. <a href="#cc1090414ba4805db330e09a3f26178e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< pollfd > </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#4b163da2ea08d648a34f9903b86d82fe">pollFds</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">poll() file descriptors container <a href="#4b163da2ea08d648a34f9903b86d82fe"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#19c7caeb43236b6c68f38d04e4bfca33">socket</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Socket to listen for connections on. <a href="#19c7caeb43236b6c68f38d04e4bfca33"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#7b7f39053271cd4afd41b4672d7eeec4">wakeUpFdIn</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Input file descriptor to the wakeup socket pair. <a href="#7b7f39053271cd4afd41b4672d7eeec4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#ba0fbaf4469c1c7e36d75a4faade3b7e">wakeUpFdOut</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Output file descriptor to the wakeup socket pair. <a href="#ba0fbaf4469c1c7e36d75a4faade3b7e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">std::map< int, <a class="el" href="structFastcgipp_1_1Transceiver_1_1fdBuffer.html">fdBuffer</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver.html#28c9ac40d0fe11414bc86ad2b8ce4953">fdBuffers</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Container associating file descriptors with their receive buffers. <a href="#28c9ac40d0fe11414bc86ad2b8ce4953"></a><br></td></tr> <tr><td colspan="2"><br><h2>Classes</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html">Buffer</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Buffer type for transmission of FastCGI records <a href="classFastcgipp_1_1Transceiver_1_1Buffer.html#_details">More...</a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structFastcgipp_1_1Transceiver_1_1fdBuffer.html">fdBuffer</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Buffer type for receiving FastCGI records <a href="structFastcgipp_1_1Transceiver_1_1fdBuffer.html#_details">More...</a><br></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> Handles low level communication with "the other side". <p> This class handles the sending/receiving/buffering of data through the OS level sockets and also the creation/destruction of the sockets themselves. <p>Definition at line <a class="el" href="transceiver_8hpp-source.html#l00079">79</a> of file <a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>.</p> <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="b8be64ba57bcef64d313960544400d6c"></a><!-- doxytag: member="Fastcgipp::Transceiver::Transceiver" ref="b8be64ba57bcef64d313960544400d6c" args="(int fd_, boost::function< void(Protocol::FullId, Message)> sendMessage_)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Fastcgipp::Transceiver::Transceiver </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>fd_</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">boost::function< void(<a class="el" href="structFastcgipp_1_1Protocol_1_1FullId.html">Protocol::FullId</a>, <a class="el" href="structFastcgipp_1_1Message.html">Message</a>)> </td> <td class="paramname"> <em>sendMessage_</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Constructor. <p> Construct a transceiver object based on an initial file descriptor to listen on and a function to pass messages on to.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>fd_</em> </td><td>File descriptor to listen for connections on </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>sendMessage_</em> </td><td>Function to call to pass messages to requests </td></tr> </table> </dl> <p>Definition at line <a class="el" href="transceiver_8cpp-source.html#l00192">192</a> of file <a class="el" href="transceiver_8cpp-source.html">transceiver.cpp</a>.</p> <p>References <a class="el" href="classFastcgipp_1_1Transceiver.html#4b163da2ea08d648a34f9903b86d82fe">pollFds</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#19c7caeb43236b6c68f38d04e4bfca33">socket</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#7b7f39053271cd4afd41b4672d7eeec4">wakeUpFdIn</a>, and <a class="el" href="classFastcgipp_1_1Transceiver.html#ba0fbaf4469c1c7e36d75a4faade3b7e">wakeUpFdOut</a>.</p> </div> </div><p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="f06e586f5a49dd694f2ae98398870721"></a><!-- doxytag: member="Fastcgipp::Transceiver::handler" ref="f06e586f5a49dd694f2ae98398870721" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool Fastcgipp::Transceiver::handler </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> General transceiver handler. <p> This function is called by <a class="el" href="classFastcgipp_1_1Manager.html#578c8468166d892d1858ad6f4d953d8d" title="General handling function to be called after construction.">Manager::handler()</a> to both transmit data passed to it from requests and relay received data back to them as a <a class="el" href="structFastcgipp_1_1Message.html" title="Data structure used to pass messages within the fastcgi++ task management system...">Message</a>. The function will return true if there is nothing at all for it to do.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Boolean value indicating whether there is data to be transmitted or received </dd></dl> <p>Definition at line <a class="el" href="transceiver_8cpp-source.html#l00065">65</a> of file <a class="el" href="transceiver_8cpp-source.html">transceiver.cpp</a>.</p> <p>References <a class="el" href="structFastcgipp_1_1Message.html#4467d1b63f295c224943dc1a1ef112ff">Fastcgipp::Message::data</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#28c9ac40d0fe11414bc86ad2b8ce4953">fdBuffers</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#4b163da2ea08d648a34f9903b86d82fe">pollFds</a>, <a class="el" href="namespaceFastcgipp.html#b81025146f21643e6e765612d5d57462">Fastcgipp::reventsZero()</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#cc1090414ba4805db330e09a3f26178e">sendMessage</a>, <a class="el" href="structFastcgipp_1_1Message.html#93817f3790bbeaf27d4e669ed3ce7179">Fastcgipp::Message::size</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#19c7caeb43236b6c68f38d04e4bfca33">socket</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#54ffa1d25fed65ff61024ff8ce26a99b">transmit()</a>, <a class="el" href="structFastcgipp_1_1Message.html#ba5936b4703cc3c398bbf0bb9eb6bd4f">Fastcgipp::Message::type</a>, and <a class="el" href="classFastcgipp_1_1Transceiver.html#7b7f39053271cd4afd41b4672d7eeec4">wakeUpFdIn</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Manager.html#578c8468166d892d1858ad6f4d953d8d">Fastcgipp::Manager< T >::handler()</a>.</p> </div> </div><p> <a class="anchor" name="5019405a5a05d60fdaa73d349cca58c0"></a><!-- doxytag: member="Fastcgipp::Transceiver::requestWrite" ref="5019405a5a05d60fdaa73d349cca58c0" args="(size_t size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structFastcgipp_1_1Block.html">Block</a> Fastcgipp::Transceiver::requestWrite </td> <td>(</td> <td class="paramtype">size_t </td> <td class="paramname"> <em>size</em> </td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Direct interface to <a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html#cf2cce1c96a7138adda98414f4e0d921" title="Request a write block in the buffer.">Buffer::requestWrite()</a>. <p> <p>Definition at line <a class="el" href="transceiver_8hpp-source.html#l00093">93</a> of file <a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>.</p> <p>References <a class="el" href="classFastcgipp_1_1Transceiver.html#8656d4bd7359d7e12a9cc5921fc3a1d4">buffer</a>, and <a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html#cf2cce1c96a7138adda98414f4e0d921">Fastcgipp::Transceiver::Buffer::requestWrite()</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Request.html#c74d29ec18ccdf7dbb538660c462c712">Fastcgipp::Request< charT >::complete()</a>, <a class="el" href="classFastcgipp_1_1Fcgistream_1_1Fcgibuf.html#7323979677487f217c4ca0f6f2f02706">Fastcgipp::Fcgistream< charT, traits >::Fcgibuf::emptyBuffer()</a>, <a class="el" href="classFastcgipp_1_1Request.html#fb01e31a30e69ab7a2720172c3aab619">Fastcgipp::Request< charT >::handler()</a>, and <a class="el" href="classFastcgipp_1_1Manager.html#cefd3c86045b2663e9529dd4109268e1">Fastcgipp::Manager< T >::localHandler()</a>.</p> </div> </div><p> <a class="anchor" name="1a720bf113ad9781e59b0fc021988d29"></a><!-- doxytag: member="Fastcgipp::Transceiver::secureWrite" ref="1a720bf113ad9781e59b0fc021988d29" args="(size_t size, Protocol::FullId id, bool kill)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void Fastcgipp::Transceiver::secureWrite </td> <td>(</td> <td class="paramtype">size_t </td> <td class="paramname"> <em>size</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structFastcgipp_1_1Protocol_1_1FullId.html">Protocol::FullId</a> </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>kill</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Direct interface to <a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html#a1a80f3feb1355bd5bc57545d16c309e" title="Secure a write in the buffer.">Buffer::secureWrite()</a>. <p> <p>Definition at line <a class="el" href="transceiver_8hpp-source.html#l00095">95</a> of file <a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>.</p> <p>References <a class="el" href="classFastcgipp_1_1Transceiver.html#8656d4bd7359d7e12a9cc5921fc3a1d4">buffer</a>, <a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html#a1a80f3feb1355bd5bc57545d16c309e">Fastcgipp::Transceiver::Buffer::secureWrite()</a>, and <a class="el" href="classFastcgipp_1_1Transceiver.html#54ffa1d25fed65ff61024ff8ce26a99b">transmit()</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Request.html#c74d29ec18ccdf7dbb538660c462c712">Fastcgipp::Request< charT >::complete()</a>, <a class="el" href="classFastcgipp_1_1Fcgistream_1_1Fcgibuf.html#7323979677487f217c4ca0f6f2f02706">Fastcgipp::Fcgistream< charT, traits >::Fcgibuf::emptyBuffer()</a>, <a class="el" href="classFastcgipp_1_1Request.html#fb01e31a30e69ab7a2720172c3aab619">Fastcgipp::Request< charT >::handler()</a>, and <a class="el" href="classFastcgipp_1_1Manager.html#cefd3c86045b2663e9529dd4109268e1">Fastcgipp::Manager< T >::localHandler()</a>.</p> </div> </div><p> <a class="anchor" name="5c1bafc977eaa9e4c3e94a5b9eab59eb"></a><!-- doxytag: member="Fastcgipp::Transceiver::sleep" ref="5c1bafc977eaa9e4c3e94a5b9eab59eb" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void Fastcgipp::Transceiver::sleep </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Blocks until there is data to receive or a call to <a class="el" href="classFastcgipp_1_1Transceiver.html#4dfd5de627b92f6bb5a834a68b20bb85" title="Forces a wakeup from a call to sleep().">wake()</a> is made. <p> <p>Definition at line <a class="el" href="transceiver_8hpp-source.html#l00106">106</a> of file <a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>.</p> <p>References <a class="el" href="classFastcgipp_1_1Transceiver.html#4b163da2ea08d648a34f9903b86d82fe">pollFds</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Manager.html#578c8468166d892d1858ad6f4d953d8d">Fastcgipp::Manager< T >::handler()</a>.</p> </div> </div><p> <a class="anchor" name="4dfd5de627b92f6bb5a834a68b20bb85"></a><!-- doxytag: member="Fastcgipp::Transceiver::wake" ref="4dfd5de627b92f6bb5a834a68b20bb85" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void Fastcgipp::Transceiver::wake </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Forces a wakeup from a call to <a class="el" href="classFastcgipp_1_1Transceiver.html#5c1bafc977eaa9e4c3e94a5b9eab59eb" title="Blocks until there is data to receive or a call to wake() is made.">sleep()</a>. <p> <p>Definition at line <a class="el" href="transceiver_8cpp-source.html#l00186">186</a> of file <a class="el" href="transceiver_8cpp-source.html">transceiver.cpp</a>.</p> <p>References <a class="el" href="classFastcgipp_1_1Transceiver.html#ba0fbaf4469c1c7e36d75a4faade3b7e">wakeUpFdOut</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Manager.html#33fabd7f6c5eab389ef766fe67f4f870">Fastcgipp::Manager< T >::push()</a>.</p> </div> </div><p> <a class="anchor" name="54ffa1d25fed65ff61024ff8ce26a99b"></a><!-- doxytag: member="Fastcgipp::Transceiver::transmit" ref="54ffa1d25fed65ff61024ff8ce26a99b" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int Fastcgipp::Transceiver::transmit </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Transmit all buffered data possible. <p> <p>Definition at line <a class="el" href="transceiver_8cpp-source.html#l00024">24</a> of file <a class="el" href="transceiver_8cpp-source.html">transceiver.cpp</a>.</p> <p>References <a class="el" href="classFastcgipp_1_1Transceiver.html#8656d4bd7359d7e12a9cc5921fc3a1d4">buffer</a>, <a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html#f3f403dd53cad518f8cc12d03ac67bd2">Fastcgipp::Transceiver::Buffer::empty()</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#28c9ac40d0fe11414bc86ad2b8ce4953">fdBuffers</a>, <a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html#ca9630cbe4c0c08d009fbeed5bd85e92">Fastcgipp::Transceiver::Buffer::freeRead()</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#4b163da2ea08d648a34f9903b86d82fe">pollFds</a>, and <a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html#c017d6e4d7b8552a8c637da676ce7402">Fastcgipp::Transceiver::Buffer::requestRead()</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Transceiver.html#f06e586f5a49dd694f2ae98398870721">handler()</a>, and <a class="el" href="classFastcgipp_1_1Transceiver.html#1a720bf113ad9781e59b0fc021988d29">secureWrite()</a>.</p> </div> </div><p> <hr><h2>Member Data Documentation</h2> <a class="anchor" name="8656d4bd7359d7e12a9cc5921fc3a1d4"></a><!-- doxytag: member="Fastcgipp::Transceiver::buffer" ref="8656d4bd7359d7e12a9cc5921fc3a1d4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classFastcgipp_1_1Transceiver_1_1Buffer.html">Buffer</a> <a class="el" href="classFastcgipp_1_1Transceiver.html#8656d4bd7359d7e12a9cc5921fc3a1d4">Fastcgipp::Transceiver::buffer</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> Buffer for transmitting data <p> <p>Definition at line <a class="el" href="transceiver_8hpp-source.html#l00256">256</a> of file <a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Transceiver.html#5019405a5a05d60fdaa73d349cca58c0">requestWrite()</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#1a720bf113ad9781e59b0fc021988d29">secureWrite()</a>, and <a class="el" href="classFastcgipp_1_1Transceiver.html#54ffa1d25fed65ff61024ff8ce26a99b">transmit()</a>.</p> </div> </div><p> <a class="anchor" name="cc1090414ba4805db330e09a3f26178e"></a><!-- doxytag: member="Fastcgipp::Transceiver::sendMessage" ref="cc1090414ba4805db330e09a3f26178e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">boost::function<void(<a class="el" href="structFastcgipp_1_1Protocol_1_1FullId.html">Protocol::FullId</a>, <a class="el" href="structFastcgipp_1_1Message.html">Message</a>)> <a class="el" href="classFastcgipp_1_1Transceiver.html#cc1090414ba4805db330e09a3f26178e">Fastcgipp::Transceiver::sendMessage</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> Function to call to pass messages to requests. <p> <p>Definition at line <a class="el" href="transceiver_8hpp-source.html#l00258">258</a> of file <a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Transceiver.html#f06e586f5a49dd694f2ae98398870721">handler()</a>.</p> </div> </div><p> <a class="anchor" name="4b163da2ea08d648a34f9903b86d82fe"></a><!-- doxytag: member="Fastcgipp::Transceiver::pollFds" ref="4b163da2ea08d648a34f9903b86d82fe" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">std::vector<pollfd> <a class="el" href="classFastcgipp_1_1Transceiver.html#4b163da2ea08d648a34f9903b86d82fe">Fastcgipp::Transceiver::pollFds</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> poll() file descriptors container <p> <p>Definition at line <a class="el" href="transceiver_8hpp-source.html#l00261">261</a> of file <a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Transceiver.html#f06e586f5a49dd694f2ae98398870721">handler()</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#5c1bafc977eaa9e4c3e94a5b9eab59eb">sleep()</a>, <a class="el" href="classFastcgipp_1_1Transceiver.html#b8be64ba57bcef64d313960544400d6c">Transceiver()</a>, and <a class="el" href="classFastcgipp_1_1Transceiver.html#54ffa1d25fed65ff61024ff8ce26a99b">transmit()</a>.</p> </div> </div><p> <a class="anchor" name="19c7caeb43236b6c68f38d04e4bfca33"></a><!-- doxytag: member="Fastcgipp::Transceiver::socket" ref="19c7caeb43236b6c68f38d04e4bfca33" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="classFastcgipp_1_1Transceiver.html#19c7caeb43236b6c68f38d04e4bfca33">Fastcgipp::Transceiver::socket</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> Socket to listen for connections on. <p> <p>Definition at line <a class="el" href="transceiver_8hpp-source.html#l00263">263</a> of file <a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Transceiver.html#f06e586f5a49dd694f2ae98398870721">handler()</a>, and <a class="el" href="classFastcgipp_1_1Transceiver.html#b8be64ba57bcef64d313960544400d6c">Transceiver()</a>.</p> </div> </div><p> <a class="anchor" name="7b7f39053271cd4afd41b4672d7eeec4"></a><!-- doxytag: member="Fastcgipp::Transceiver::wakeUpFdIn" ref="7b7f39053271cd4afd41b4672d7eeec4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="classFastcgipp_1_1Transceiver.html#7b7f39053271cd4afd41b4672d7eeec4">Fastcgipp::Transceiver::wakeUpFdIn</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> Input file descriptor to the wakeup socket pair. <p> <p>Definition at line <a class="el" href="transceiver_8hpp-source.html#l00265">265</a> of file <a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Transceiver.html#f06e586f5a49dd694f2ae98398870721">handler()</a>, and <a class="el" href="classFastcgipp_1_1Transceiver.html#b8be64ba57bcef64d313960544400d6c">Transceiver()</a>.</p> </div> </div><p> <a class="anchor" name="ba0fbaf4469c1c7e36d75a4faade3b7e"></a><!-- doxytag: member="Fastcgipp::Transceiver::wakeUpFdOut" ref="ba0fbaf4469c1c7e36d75a4faade3b7e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="classFastcgipp_1_1Transceiver.html#ba0fbaf4469c1c7e36d75a4faade3b7e">Fastcgipp::Transceiver::wakeUpFdOut</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> Output file descriptor to the wakeup socket pair. <p> <p>Definition at line <a class="el" href="transceiver_8hpp-source.html#l00267">267</a> of file <a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Transceiver.html#b8be64ba57bcef64d313960544400d6c">Transceiver()</a>, and <a class="el" href="classFastcgipp_1_1Transceiver.html#4dfd5de627b92f6bb5a834a68b20bb85">wake()</a>.</p> </div> </div><p> <a class="anchor" name="28c9ac40d0fe11414bc86ad2b8ce4953"></a><!-- doxytag: member="Fastcgipp::Transceiver::fdBuffers" ref="28c9ac40d0fe11414bc86ad2b8ce4953" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">std::map<int, <a class="el" href="structFastcgipp_1_1Transceiver_1_1fdBuffer.html">fdBuffer</a>> <a class="el" href="classFastcgipp_1_1Transceiver.html#28c9ac40d0fe11414bc86ad2b8ce4953">Fastcgipp::Transceiver::fdBuffers</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> Container associating file descriptors with their receive buffers. <p> <p>Definition at line <a class="el" href="transceiver_8hpp-source.html#l00270">270</a> of file <a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a>.</p> <p>Referenced by <a class="el" href="classFastcgipp_1_1Transceiver.html#f06e586f5a49dd694f2ae98398870721">handler()</a>, and <a class="el" href="classFastcgipp_1_1Transceiver.html#54ffa1d25fed65ff61024ff8ce26a99b">transmit()</a>.</p> </div> </div><p> <hr>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="transceiver_8hpp-source.html">transceiver.hpp</a><li><a class="el" href="transceiver_8cpp-source.html">transceiver.cpp</a></ul> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 16 15:17:47 2008 for fastcgi++ by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address> </body> </html>