Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 23e07fd43e778a61ff4b78161a3e2389 > files > 974

cryptopp-doc-5.6.1-5.fc14.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>Crypto++: NetworkSink 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.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Crypto++</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;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 id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-static-methods">Static Protected Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">NetworkSink Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="NetworkSink" --><!-- doxytag: inherits="NonblockingSink" -->
<p>Network <a class="el" href="class_sink.html" title="A BufferedTransformation that doesn&#39;t produce any retrievable output.">Sink</a>.  
 <a href="class_network_sink.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="network_8h_source.html">network.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for NetworkSink:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_network_sink.png" usemap="#NetworkSink_map" alt=""/>
  <map id="NetworkSink_map" name="NetworkSink_map">
<area href="class_nonblocking_sink.html" title="a Sink class that queues input and can flush to a device for a specified amount of time..." alt="NonblockingSink" shape="rect" coords="232,224,377,248"/>
<area href="class_sink.html" title="A BufferedTransformation that doesn&#39;t produce any retrievable output." alt="Sink" shape="rect" coords="77,168,222,192"/>
<area href="class_nonblocking_sink_info.html" alt="NonblockingSinkInfo" shape="rect" coords="232,168,377,192"/>
<area href="class_limited_bandwidth.html" alt="LimitedBandwidth" shape="rect" coords="387,168,532,192"/>
<area href="class_buffered_transformation.html" title="interface for buffered transformations" alt="BufferedTransformation" shape="rect" coords="77,112,222,136"/>
<area href="class_algorithm.html" title="interface for all crypto algorithms" alt="Algorithm" shape="rect" coords="0,56,145,80"/>
<area href="class_waitable.html" title="interface for objects that you can wait for" alt="Waitable" shape="rect" coords="155,56,300,80"/>
<area href="class_clonable.html" title="interface for cloning objects, this is not implemented by most classes yet" alt="Clonable" shape="rect" coords="0,0,145,24"/>
<area href="class_socket_sink.html" title="socket-based implementation of NetworkSink" alt="SocketSink" shape="rect" coords="155,336,300,360"/>
<area href="class_windows_pipe_sink.html" title="Windows Pipe Sink." alt="WindowsPipeSink" shape="rect" coords="310,336,455,360"/>
</map>
 </div></div>

<p><a href="class_network_sink-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac778064029bf196a1342625e29aaa227"></a><!-- doxytag: member="NetworkSink::NetworkSink" ref="ac778064029bf196a1342625e29aaa227" args="(unsigned int maxBufferSize, unsigned int autoFlushBound)" -->
&#160;</td><td class="memItemRight" valign="bottom"><b>NetworkSink</b> (unsigned int maxBufferSize, unsigned int autoFlushBound)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_network_sink.html#a4c1ccafa0cd1eb8ea8eebf8dbdbcda29">GetMaxWaitObjectCount</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a398a8ac1689dffbabb0115787904688b"></a><!-- doxytag: member="NetworkSink::GetWaitObjects" ref="a398a8ac1689dffbabb0115787904688b" args="(WaitObjectContainer &amp;container, CallStack const &amp;callStack)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>GetWaitObjects</b> (<a class="el" href="class_wait_object_container.html">WaitObjectContainer</a> &amp;container, <a class="el" href="class_call_stack.html">CallStack</a> const &amp;callStack)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_network_sink.html#a5827a2d026f19314c777b068ce2b69fb">Put2</a> (const byte *inString, size_t length, int messageEnd, bool blocking)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">input multiple bytes for blocking or non-blocking processing  <a href="#a5827a2d026f19314c777b068ce2b69fb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b88676369cc1c5809c00ca6a269fc98"></a><!-- doxytag: member="NetworkSink::SetMaxBufferSize" ref="a1b88676369cc1c5809c00ca6a269fc98" args="(size_t maxBufferSize)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetMaxBufferSize</b> (size_t maxBufferSize)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fe72dabc3ad9d77bbff0cbc2d73f2dc"></a><!-- doxytag: member="NetworkSink::SetAutoFlushBound" ref="a2fe72dabc3ad9d77bbff0cbc2d73f2dc" args="(size_t bound)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_network_sink.html#a2fe72dabc3ad9d77bbff0cbc2d73f2dc">SetAutoFlushBound</a> (size_t bound)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">set a bound which will cause sink to flush if exceeded by GetCurrentBufferSize() <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5462483511b221a61e2b3b21ecfef34b"></a><!-- doxytag: member="NetworkSink::GetMaxBufferSize" ref="a5462483511b221a61e2b3b21ecfef34b" args="() const " -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetMaxBufferSize</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a121998c0dcabb647141a900d198324f0"></a><!-- doxytag: member="NetworkSink::GetCurrentBufferSize" ref="a121998c0dcabb647141a900d198324f0" args="() const " -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetCurrentBufferSize</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1f28cbff2fbbc69787238a3b955e7fe"></a><!-- doxytag: member="NetworkSink::ClearBuffer" ref="ab1f28cbff2fbbc69787238a3b955e7fe" args="()" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>ClearBuffer</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3326b1dabfda08f47bdb6a9a270ba6e"></a><!-- doxytag: member="NetworkSink::EofPending" ref="ab3326b1dabfda08f47bdb6a9a270ba6e" args="() const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EofPending</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0da4518b7999c27c4a131f71ef06795"></a><!-- doxytag: member="NetworkSink::ComputeCurrentSpeed" ref="aa0da4518b7999c27c4a131f71ef06795" args="()" -->
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_network_sink.html#aa0da4518b7999c27c4a131f71ef06795">ComputeCurrentSpeed</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">compute the current speed of this sink in bytes per second <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ee5e7f84b6ceb801ad7fab4c840dad5"></a><!-- doxytag: member="NetworkSink::GetMaxObservedSpeed" ref="a8ee5e7f84b6ceb801ad7fab4c840dad5" args="() const " -->
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_network_sink.html#a8ee5e7f84b6ceb801ad7fab4c840dad5">GetMaxObservedSpeed</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">get the maximum observed speed of this sink in bytes per second <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af09858e4c31e657d61ca458d00888e2d"></a><!-- doxytag: member="NetworkSink::IsolatedFlush" ref="af09858e4c31e657d61ca458d00888e2d" args="(bool hardFlush, bool blocking)" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsolatedFlush</b> (bool hardFlush, bool blocking)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">lword&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_nonblocking_sink.html#af5da8dc12d42cf6152588ab02de4d336">TimedFlush</a> (unsigned long maxTime, size_t targetSize=0)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">flush to device for no more than maxTime milliseconds  <a href="#af5da8dc12d42cf6152588ab02de4d336"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f00dceb03f4eae824a42e285e2f6972"></a><!-- doxytag: member="NetworkSink::TransferTo2" ref="a3f00dceb03f4eae824a42e285e2f6972" args="(BufferedTransformation &amp;target, lword &amp;transferBytes, const std::string &amp;channel=DEFAULT_CHANNEL, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_sink.html#a3f00dceb03f4eae824a42e285e2f6972">TransferTo2</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, lword &amp;transferBytes, const std::string &amp;channel=<a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a>, bool blocking=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">upon return, byteCount contains number of bytes that have finished being transfered, and returns the number of bytes left in the current transfer block <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7e0df2882712c3911cbe919f8a383a2"></a><!-- doxytag: member="NetworkSink::CopyRangeTo2" ref="ac7e0df2882712c3911cbe919f8a383a2" args="(BufferedTransformation &amp;target, lword &amp;begin, lword end=LWORD_MAX, const std::string &amp;channel=DEFAULT_CHANNEL, bool blocking=true) const " -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_sink.html#ac7e0df2882712c3911cbe919f8a383a2">CopyRangeTo2</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, lword &amp;begin, lword end=LWORD_MAX, const std::string &amp;channel=<a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a>, bool blocking=true) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">upon return, begin contains the start position of data yet to be finished copying, and returns the number of bytes left in the current transfer block <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25686ebe4c3ba26e7eeaae1dcd4d4215"></a><!-- doxytag: member="NetworkSink::Ref" ref="a25686ebe4c3ba26e7eeaae1dcd4d4215" args="()" -->
<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a25686ebe4c3ba26e7eeaae1dcd4d4215">Ref</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">return a reference to this object, useful for passing a temporary object to a function that takes a non-const reference <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd21c6715add4884fa043eaf51655039"></a><!-- doxytag: member="NetworkSink::AlgorithmName" ref="acd21c6715add4884fa043eaf51655039" args="() const " -->
virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_algorithm.html#acd21c6715add4884fa043eaf51655039">AlgorithmName</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns name of this algorithm, not universally implemented yet <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24b43349a71e1f98508eeb10b31a0a62"></a><!-- doxytag: member="NetworkSink::Clone" ref="a24b43349a71e1f98508eeb10b31a0a62" args="() const " -->
virtual <a class="el" href="class_clonable.html">Clonable</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_clonable.html#a24b43349a71e1f98508eeb10b31a0a62">Clone</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">this is not implemented by most classes yet <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_waitable.html#aded81bbe562f61932306a64e6122a6ca">Wait</a> (unsigned long milliseconds, <a class="el" href="class_call_stack.html">CallStack</a> const &amp;callStack)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">wait on this object  <a href="#aded81bbe562f61932306a64e6122a6ca"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08ace411b5658b45fab4fd654ff9dfa1"></a><!-- doxytag: member="NetworkSink::GetMaxBytesPerSecond" ref="a08ace411b5658b45fab4fd654ff9dfa1" args="() const " -->
lword&#160;</td><td class="memItemRight" valign="bottom"><b>GetMaxBytesPerSecond</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2b5be51a91d335f7ced2270e0f871ce"></a><!-- doxytag: member="NetworkSink::SetMaxBytesPerSecond" ref="af2b5be51a91d335f7ced2270e0f871ce" args="(lword v)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetMaxBytesPerSecond</b> (lword v)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a619226f8c399a4e03c6685bfa3e5b40f"></a><!-- doxytag: member="NetworkSink::ComputeCurrentTransceiveLimit" ref="a619226f8c399a4e03c6685bfa3e5b40f" args="()" -->
lword&#160;</td><td class="memItemRight" valign="bottom"><b>ComputeCurrentTransceiveLimit</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef86232b3bce4c5385f2a1137d63788f"></a><!-- doxytag: member="NetworkSink::TimeToNextTransceive" ref="aef86232b3bce4c5385f2a1137d63788f" args="()" -->
double&#160;</td><td class="memItemRight" valign="bottom"><b>TimeToNextTransceive</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5922e286ecf2d6cc9f1c018f5ca6871"></a><!-- doxytag: member="NetworkSink::NoteTransceive" ref="af5922e286ecf2d6cc9f1c018f5ca6871" args="(lword size)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>NoteTransceive</b> (lword size)</td></tr>
<tr><td colspan="2"><div class="groupHeader">INPUT</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae70658b0d271f8e114ac6c3cc9774ede"></a><!-- doxytag: member="NetworkSink::Put" ref="ae70658b0d271f8e114ac6c3cc9774ede" args="(byte inByte, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#ae70658b0d271f8e114ac6c3cc9774ede">Put</a> (byte inByte, bool blocking=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">input a byte for processing <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44e935e60d3877975a7c82c6353d65c9"></a><!-- doxytag: member="NetworkSink::Put" ref="a44e935e60d3877975a7c82c6353d65c9" args="(const byte *inString, size_t length, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a44e935e60d3877975a7c82c6353d65c9">Put</a> (const byte *inString, size_t length, bool blocking=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">input multiple bytes <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92c60616792d7bce5cd41eaffbd1c3cc"></a><!-- doxytag: member="NetworkSink::PutWord16" ref="a92c60616792d7bce5cd41eaffbd1c3cc" args="(word16 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a92c60616792d7bce5cd41eaffbd1c3cc">PutWord16</a> (word16 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">input a 16-bit word <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="affcc574867d51528afe3c96721ded075"></a><!-- doxytag: member="NetworkSink::PutWord32" ref="affcc574867d51528afe3c96721ded075" args="(word32 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#affcc574867d51528afe3c96721ded075">PutWord32</a> (word32 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">input a 32-bit word <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual byte *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#af390325c959c3d6a2c03a447d6cd469d">CreatePutSpace</a> (size_t &amp;size)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">request space which can be written into by the caller, and then used as input to <a class="el" href="class_buffered_transformation.html#ae70658b0d271f8e114ac6c3cc9774ede" title="input a byte for processing">Put()</a>  <a href="#af390325c959c3d6a2c03a447d6cd469d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad130a75276220463bd261b3904576385"></a><!-- doxytag: member="NetworkSink::CanModifyInput" ref="ad130a75276220463bd261b3904576385" args="() const " -->
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>CanModifyInput</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae15df84a7b67c25dfe2ce0ef5a74123c"></a><!-- doxytag: member="NetworkSink::PutModifiable" ref="ae15df84a7b67c25dfe2ce0ef5a74123c" args="(byte *inString, size_t length, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#ae15df84a7b67c25dfe2ce0ef5a74123c">PutModifiable</a> (byte *inString, size_t length, bool blocking=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">input multiple bytes that may be modified by callee <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20ae0ef2e4ff338b43849e541e9b940f"></a><!-- doxytag: member="NetworkSink::MessageEnd" ref="a20ae0ef2e4ff338b43849e541e9b940f" args="(int propagation=&#45;1, bool blocking=true)" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><b>MessageEnd</b> (int propagation=-1, bool blocking=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa10b7e626f5af900a4d12f6e5d125891"></a><!-- doxytag: member="NetworkSink::PutMessageEnd" ref="aa10b7e626f5af900a4d12f6e5d125891" args="(const byte *inString, size_t length, int propagation=&#45;1, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutMessageEnd</b> (const byte *inString, size_t length, int propagation=-1, bool blocking=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a770bf11f26d4dec66423a7dc2d36843d">PutModifiable2</a> (byte *inString, size_t length, int messageEnd, bool blocking)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">input multiple bytes that may be modified by callee for blocking or non-blocking processing  <a href="#a770bf11f26d4dec66423a7dc2d36843d"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">SIGNALS</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bb05ac3b6302e2ab994586d526fa804"></a><!-- doxytag: member="NetworkSink::IsolatedInitialize" ref="a7bb05ac3b6302e2ab994586d526fa804" args="(const NameValuePairs &amp;parameters)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>IsolatedInitialize</b> (const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;parameters)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf09f0cd6dbd022539a9ac5c316d4984"></a><!-- doxytag: member="NetworkSink::IsolatedMessageSeriesEnd" ref="aaf09f0cd6dbd022539a9ac5c316d4984" args="(bool blocking)" -->
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsolatedMessageSeriesEnd</b> (bool blocking)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0dd5456c06e0e47d901e8055b50df929"></a><!-- doxytag: member="NetworkSink::Initialize" ref="a0dd5456c06e0e47d901e8055b50df929" args="(const NameValuePairs &amp;parameters=g_nullNameValuePairs, int propagation=&#45;1)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a0dd5456c06e0e47d901e8055b50df929">Initialize</a> (const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;parameters=<a class="el" href="cryptlib_8h.html#aa9048ef24353685fd0dcc4180c6884c2">g_nullNameValuePairs</a>, int propagation=-1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">initialize or reinitialize this object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a8a62b1b6c8f310363f32b05b20c306eb">Flush</a> (bool hardFlush, int propagation=-1, bool blocking=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">flush buffered input and/or output  <a href="#a8a62b1b6c8f310363f32b05b20c306eb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#aae4c5ae024419e31bfa0c24eb35b24c2">MessageSeriesEnd</a> (int propagation=-1, bool blocking=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">mark end of a series of messages  <a href="#aae4c5ae024419e31bfa0c24eb35b24c2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#ae77dc2fddb3ff142effb00eff3217581">SetAutoSignalPropagation</a> (int propagation)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">set propagation of automatically generated and transferred signals  <a href="#ae77dc2fddb3ff142effb00eff3217581"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7367757722f390fae20607afe0f916c5"></a><!-- doxytag: member="NetworkSink::GetAutoSignalPropagation" ref="a7367757722f390fae20607afe0f916c5" args="() const " -->
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>GetAutoSignalPropagation</b> () const </td></tr>
<tr><td colspan="2"><div class="groupHeader">RETRIEVAL OF ONE MESSAGE</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual lword&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a6ec48acd2d2bda08baa4baa1c9a8a99c">MaxRetrievable</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns number of bytes that is currently ready for retrieval  <a href="#a6ec48acd2d2bda08baa4baa1c9a8a99c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5ee1b2a57700142f9c51e5a94703fc2"></a><!-- doxytag: member="NetworkSink::AnyRetrievable" ref="ad5ee1b2a57700142f9c51e5a94703fc2" args="() const " -->
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#ad5ee1b2a57700142f9c51e5a94703fc2">AnyRetrievable</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns whether any bytes are currently ready for retrieval <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e1ad913c8fe697d269f408a7d5928fc"></a><!-- doxytag: member="NetworkSink::Get" ref="a9e1ad913c8fe697d269f408a7d5928fc" args="(byte &amp;outByte)" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a9e1ad913c8fe697d269f408a7d5928fc">Get</a> (byte &amp;outByte)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">try to retrieve a single byte <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a6f18a871720453e1791c64f0461a9f"></a><!-- doxytag: member="NetworkSink::Get" ref="a0a6f18a871720453e1791c64f0461a9f" args="(byte *outString, size_t getMax)" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a0a6f18a871720453e1791c64f0461a9f">Get</a> (byte *outString, size_t getMax)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">try to retrieve multiple bytes <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fa048faf8c043ad57ae0a8911070090"></a><!-- doxytag: member="NetworkSink::Peek" ref="a5fa048faf8c043ad57ae0a8911070090" args="(byte &amp;outByte) const " -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a5fa048faf8c043ad57ae0a8911070090">Peek</a> (byte &amp;outByte) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">peek at the next byte without removing it from the output buffer <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacdeedab8dc8557d17b12b67a9ff94dc"></a><!-- doxytag: member="NetworkSink::Peek" ref="aacdeedab8dc8557d17b12b67a9ff94dc" args="(byte *outString, size_t peekMax) const " -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#aacdeedab8dc8557d17b12b67a9ff94dc">Peek</a> (byte *outString, size_t peekMax) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">peek at multiple bytes without removing them from the output buffer <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ac50bcb2d279c3c6aef6858dab3eeb7"></a><!-- doxytag: member="NetworkSink::GetWord16" ref="a1ac50bcb2d279c3c6aef6858dab3eeb7" args="(word16 &amp;value, ByteOrder order=BIG_ENDIAN_ORDER)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a1ac50bcb2d279c3c6aef6858dab3eeb7">GetWord16</a> (word16 &amp;value, ByteOrder order=BIG_ENDIAN_ORDER)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">try to retrieve a 16-bit word <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69c064d931db3a8631c1138827d67e2f"></a><!-- doxytag: member="NetworkSink::GetWord32" ref="a69c064d931db3a8631c1138827d67e2f" args="(word32 &amp;value, ByteOrder order=BIG_ENDIAN_ORDER)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a69c064d931db3a8631c1138827d67e2f">GetWord32</a> (word32 &amp;value, ByteOrder order=BIG_ENDIAN_ORDER)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">try to retrieve a 32-bit word <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a452057f0d887ba0f2b6ec5373e290e91"></a><!-- doxytag: member="NetworkSink::PeekWord16" ref="a452057f0d887ba0f2b6ec5373e290e91" args="(word16 &amp;value, ByteOrder order=BIG_ENDIAN_ORDER) const " -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a452057f0d887ba0f2b6ec5373e290e91">PeekWord16</a> (word16 &amp;value, ByteOrder order=BIG_ENDIAN_ORDER) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">try to peek at a 16-bit word <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee19b1f5f0df32de2f33bf6bded3bae6"></a><!-- doxytag: member="NetworkSink::PeekWord32" ref="aee19b1f5f0df32de2f33bf6bded3bae6" args="(word32 &amp;value, ByteOrder order=BIG_ENDIAN_ORDER) const " -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#aee19b1f5f0df32de2f33bf6bded3bae6">PeekWord32</a> (word32 &amp;value, ByteOrder order=BIG_ENDIAN_ORDER) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">try to peek at a 32-bit word <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac31ac5d2da7897fb097086496b85e6f5"></a><!-- doxytag: member="NetworkSink::TransferTo" ref="ac31ac5d2da7897fb097086496b85e6f5" args="(BufferedTransformation &amp;target, lword transferMax=LWORD_MAX, const std::string &amp;channel=DEFAULT_CHANNEL)" -->
lword&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#ac31ac5d2da7897fb097086496b85e6f5">TransferTo</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, lword transferMax=LWORD_MAX, const std::string &amp;channel=<a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">move transferMax bytes of the buffered output to target as input <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c25529ded99db20ad35ccef3f7234e6"></a><!-- doxytag: member="NetworkSink::Skip" ref="a0c25529ded99db20ad35ccef3f7234e6" args="(lword skipMax=LWORD_MAX)" -->
virtual lword&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a0c25529ded99db20ad35ccef3f7234e6">Skip</a> (lword skipMax=LWORD_MAX)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">discard skipMax bytes from the output buffer <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5253b8693ac9932f3862b71c9960903c"></a><!-- doxytag: member="NetworkSink::CopyTo" ref="a5253b8693ac9932f3862b71c9960903c" args="(BufferedTransformation &amp;target, lword copyMax=LWORD_MAX, const std::string &amp;channel=DEFAULT_CHANNEL) const " -->
lword&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a5253b8693ac9932f3862b71c9960903c">CopyTo</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, lword copyMax=LWORD_MAX, const std::string &amp;channel=<a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a>) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">copy copyMax bytes of the buffered output to target as input <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1483b2879a70d26d0de568dd6081bb7b"></a><!-- doxytag: member="NetworkSink::CopyRangeTo" ref="a1483b2879a70d26d0de568dd6081bb7b" args="(BufferedTransformation &amp;target, lword position, lword copyMax=LWORD_MAX, const std::string &amp;channel=DEFAULT_CHANNEL) const " -->
lword&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a1483b2879a70d26d0de568dd6081bb7b">CopyRangeTo</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, lword position, lword copyMax=LWORD_MAX, const std::string &amp;channel=<a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a>) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">copy copyMax bytes of the buffered output, starting at position (relative to current position), to target as input <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">RETRIEVAL OF MULTIPLE MESSAGES</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae793ba515457e3918f4c7afef905416a"></a><!-- doxytag: member="NetworkSink::TotalBytesRetrievable" ref="ae793ba515457e3918f4c7afef905416a" args="() const " -->
virtual lword&#160;</td><td class="memItemRight" valign="bottom"><b>TotalBytesRetrievable</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a318ef5010ac587977656dae56dfc5085"></a><!-- doxytag: member="NetworkSink::NumberOfMessages" ref="a318ef5010ac587977656dae56dfc5085" args="() const " -->
virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a318ef5010ac587977656dae56dfc5085">NumberOfMessages</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">number of times MessageEnd() has been received minus messages retrieved or skipped <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76b40ce3c88455c69f06234d609a0e4c"></a><!-- doxytag: member="NetworkSink::AnyMessages" ref="a76b40ce3c88455c69f06234d609a0e4c" args="() const " -->
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a76b40ce3c88455c69f06234d609a0e4c">AnyMessages</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns true if <a class="el" href="class_buffered_transformation.html#a318ef5010ac587977656dae56dfc5085" title="number of times MessageEnd() has been received minus messages retrieved or skipped">NumberOfMessages()</a> &gt; 0 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a8dc8562950fd563f7c62d1f1e5ec6b1e">GetNextMessage</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">start retrieving the next message  <a href="#a8dc8562950fd563f7c62d1f1e5ec6b1e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace560f14489f478bb4cd17c41905774e"></a><!-- doxytag: member="NetworkSink::SkipMessages" ref="ace560f14489f478bb4cd17c41905774e" args="(unsigned int count=UINT_MAX)" -->
virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#ace560f14489f478bb4cd17c41905774e">SkipMessages</a> (unsigned int count=UINT_MAX)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">skip count number of messages <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0446d21781676a6f9c64d0b7a727d314"></a><!-- doxytag: member="NetworkSink::TransferMessagesTo" ref="a0446d21781676a6f9c64d0b7a727d314" args="(BufferedTransformation &amp;target, unsigned int count=UINT_MAX, const std::string &amp;channel=DEFAULT_CHANNEL)" -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>TransferMessagesTo</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, unsigned int count=UINT_MAX, const std::string &amp;channel=<a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae09d3275076fa88f22670afd806205bb"></a><!-- doxytag: member="NetworkSink::CopyMessagesTo" ref="ae09d3275076fa88f22670afd806205bb" args="(BufferedTransformation &amp;target, unsigned int count=UINT_MAX, const std::string &amp;channel=DEFAULT_CHANNEL) const " -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>CopyMessagesTo</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, unsigned int count=UINT_MAX, const std::string &amp;channel=<a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a>) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaae2c7846a506939b40c2c8b708af1d4"></a><!-- doxytag: member="NetworkSink::SkipAll" ref="aaae2c7846a506939b40c2c8b708af1d4" args="()" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>SkipAll</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a84c3629cdd9be90695c9701c1b8e24a2"></a><!-- doxytag: member="NetworkSink::TransferAllTo" ref="a84c3629cdd9be90695c9701c1b8e24a2" args="(BufferedTransformation &amp;target, const std::string &amp;channel=DEFAULT_CHANNEL)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>TransferAllTo</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, const std::string &amp;channel=<a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af055ed9f3d096c9ab627973240608b3c"></a><!-- doxytag: member="NetworkSink::CopyAllTo" ref="af055ed9f3d096c9ab627973240608b3c" args="(BufferedTransformation &amp;target, const std::string &amp;channel=DEFAULT_CHANNEL) const " -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>CopyAllTo</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, const std::string &amp;channel=<a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a>) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb36a158b63cfd54acbada1a3699598c"></a><!-- doxytag: member="NetworkSink::GetNextMessageSeries" ref="aeb36a158b63cfd54acbada1a3699598c" args="()" -->
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>GetNextMessageSeries</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50e09cbbc84c5c1e098c79ca88c42158"></a><!-- doxytag: member="NetworkSink::NumberOfMessagesInThisSeries" ref="a50e09cbbc84c5c1e098c79ca88c42158" args="() const " -->
virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>NumberOfMessagesInThisSeries</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37e7c54c2be0451f4a8d395c228b1061"></a><!-- doxytag: member="NetworkSink::NumberOfMessageSeries" ref="a37e7c54c2be0451f4a8d395c228b1061" args="() const " -->
virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>NumberOfMessageSeries</b> () const </td></tr>
<tr><td colspan="2"><div class="groupHeader">NON-BLOCKING TRANSFER OF OUTPUT</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a70058989762156c376d7ffa5cb303e"></a><!-- doxytag: member="NetworkSink::TransferMessagesTo2" ref="a1a70058989762156c376d7ffa5cb303e" args="(BufferedTransformation &amp;target, unsigned int &amp;messageCount, const std::string &amp;channel=DEFAULT_CHANNEL, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a1a70058989762156c376d7ffa5cb303e">TransferMessagesTo2</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, unsigned int &amp;messageCount, const std::string &amp;channel=<a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a>, bool blocking=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">upon return, messageCount contains number of messages that have finished being transfered, and returns the number of bytes left in the current transfer block <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3e47718aa65674256e1b069ec8e706b7"></a><!-- doxytag: member="NetworkSink::TransferAllTo2" ref="a3e47718aa65674256e1b069ec8e706b7" args="(BufferedTransformation &amp;target, const std::string &amp;channel=DEFAULT_CHANNEL, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a3e47718aa65674256e1b069ec8e706b7">TransferAllTo2</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, const std::string &amp;channel=<a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a>, bool blocking=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the number of bytes left in the current transfer block <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">CHANNELS</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97a60b54fafdb3df59e1457ef629fc5f"></a><!-- doxytag: member="NetworkSink::ChannelPut" ref="a97a60b54fafdb3df59e1457ef629fc5f" args="(const std::string &amp;channel, byte inByte, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelPut</b> (const std::string &amp;channel, byte inByte, bool blocking=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b7fcb31b4cb09d38242354fcbc4b45c"></a><!-- doxytag: member="NetworkSink::ChannelPut" ref="a5b7fcb31b4cb09d38242354fcbc4b45c" args="(const std::string &amp;channel, const byte *inString, size_t length, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelPut</b> (const std::string &amp;channel, const byte *inString, size_t length, bool blocking=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3dc27692b14108ed057beb4db67fed2f"></a><!-- doxytag: member="NetworkSink::ChannelPutModifiable" ref="a3dc27692b14108ed057beb4db67fed2f" args="(const std::string &amp;channel, byte *inString, size_t length, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelPutModifiable</b> (const std::string &amp;channel, byte *inString, size_t length, bool blocking=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1bca66c16e0e52793059b41353964bd"></a><!-- doxytag: member="NetworkSink::ChannelPutWord16" ref="aa1bca66c16e0e52793059b41353964bd" args="(const std::string &amp;channel, word16 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelPutWord16</b> (const std::string &amp;channel, word16 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb06216012d6c40609db092952afcf3f"></a><!-- doxytag: member="NetworkSink::ChannelPutWord32" ref="acb06216012d6c40609db092952afcf3f" args="(const std::string &amp;channel, word32 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelPutWord32</b> (const std::string &amp;channel, word32 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0b37b299c5835083e58b205f9cc25cc"></a><!-- doxytag: member="NetworkSink::ChannelMessageEnd" ref="ae0b37b299c5835083e58b205f9cc25cc" args="(const std::string &amp;channel, int propagation=&#45;1, bool blocking=true)" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelMessageEnd</b> (const std::string &amp;channel, int propagation=-1, bool blocking=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3e9efe4c59093c330d287140fcfbdd9"></a><!-- doxytag: member="NetworkSink::ChannelPutMessageEnd" ref="ad3e9efe4c59093c330d287140fcfbdd9" args="(const std::string &amp;channel, const byte *inString, size_t length, int propagation=&#45;1, bool blocking=true)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelPutMessageEnd</b> (const std::string &amp;channel, const byte *inString, size_t length, int propagation=-1, bool blocking=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a877494d8de597af935cb770034f7f170"></a><!-- doxytag: member="NetworkSink::ChannelCreatePutSpace" ref="a877494d8de597af935cb770034f7f170" args="(const std::string &amp;channel, size_t &amp;size)" -->
virtual byte *&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelCreatePutSpace</b> (const std::string &amp;channel, size_t &amp;size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a825c38044d268f6d561cb7f849e04b13"></a><!-- doxytag: member="NetworkSink::ChannelPut2" ref="a825c38044d268f6d561cb7f849e04b13" args="(const std::string &amp;channel, const byte *begin, size_t length, int messageEnd, bool blocking)" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelPut2</b> (const std::string &amp;channel, const byte *begin, size_t length, int messageEnd, bool blocking)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeab62459524d9c93531ec365ba930be3"></a><!-- doxytag: member="NetworkSink::ChannelPutModifiable2" ref="aeab62459524d9c93531ec365ba930be3" args="(const std::string &amp;channel, byte *begin, size_t length, int messageEnd, bool blocking)" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelPutModifiable2</b> (const std::string &amp;channel, byte *begin, size_t length, int messageEnd, bool blocking)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b504b2694ecb5d709a9858c5b93a0f7"></a><!-- doxytag: member="NetworkSink::ChannelFlush" ref="a6b504b2694ecb5d709a9858c5b93a0f7" args="(const std::string &amp;channel, bool hardFlush, int propagation=&#45;1, bool blocking=true)" -->
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelFlush</b> (const std::string &amp;channel, bool hardFlush, int propagation=-1, bool blocking=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0fc63d42d94958f71fc573b17469921"></a><!-- doxytag: member="NetworkSink::ChannelMessageSeriesEnd" ref="ae0fc63d42d94958f71fc573b17469921" args="(const std::string &amp;channel, int propagation=&#45;1, bool blocking=true)" -->
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelMessageSeriesEnd</b> (const std::string &amp;channel, int propagation=-1, bool blocking=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeeb151c318a472c5f1cf41617f3414a5"></a><!-- doxytag: member="NetworkSink::SetRetrievalChannel" ref="aeeb151c318a472c5f1cf41617f3414a5" args="(const std::string &amp;channel)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>SetRetrievalChannel</b> (const std::string &amp;channel)</td></tr>
<tr><td colspan="2"><div class="groupHeader">ATTACHMENT</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a20112606fc006c56f1561653cabd9542">Attachable</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns whether this object allows attachment  <a href="#a20112606fc006c56f1561653cabd9542"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba6bbc169e26ed77a6bb5d50f91abda0"></a><!-- doxytag: member="NetworkSink::AttachedTransformation" ref="aba6bbc169e26ed77a6bb5d50f91abda0" args="()" -->
virtual <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#aba6bbc169e26ed77a6bb5d50f91abda0">AttachedTransformation</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the object immediately attached to this object or NULL for no attachment <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa335cadbf21ff23876ad9aa67ef215f1"></a><!-- doxytag: member="NetworkSink::AttachedTransformation" ref="aa335cadbf21ff23876ad9aa67ef215f1" args="() const " -->
virtual const <br class="typebreak"/>
<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>AttachedTransformation</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a424737ad6b93e393dc43c3edb1223c3d"></a><!-- doxytag: member="NetworkSink::Detach" ref="a424737ad6b93e393dc43c3edb1223c3d" args="(BufferedTransformation *newAttachment=0)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a424737ad6b93e393dc43c3edb1223c3d">Detach</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> *newAttachment=0)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">delete the current attachment chain and replace it with newAttachment <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f6cbec970dcb509b23a08fb28b3e055"></a><!-- doxytag: member="NetworkSink::Attach" ref="a9f6cbec970dcb509b23a08fb28b3e055" args="(BufferedTransformation *newAttachment)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_buffered_transformation.html#a9f6cbec970dcb509b23a08fb28b3e055">Attach</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> *newAttachment)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">add newAttachment to the end of attachment chain <br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef73fa1b6220e6484a9b0ce04f4cf53e"></a><!-- doxytag: member="NetworkSink::NULL_CHANNEL" ref="aef73fa1b6220e6484a9b0ce04f4cf53e" args="" -->
static const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>NULL_CHANNEL</b> = <a class="el" href="cryptlib_8h.html#a9a69ab5a5e0f58279c43f4f51809c84a">DEFAULT_CHANNEL</a></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3300dceb745c222f3918662e857d6d33"></a><!-- doxytag: member="NetworkSink::DoFlush" ref="a3300dceb745c222f3918662e857d6d33" args="(unsigned long maxTime, size_t targetSize)" -->
lword&#160;</td><td class="memItemRight" valign="bottom"><b>DoFlush</b> (unsigned long maxTime, size_t targetSize)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15a024438c903dcbb9422d7c38d98d3d"></a><!-- doxytag: member="NetworkSink::AccessSender" ref="a15a024438c903dcbb9422d7c38d98d3d" args="()=0" -->
virtual <a class="el" href="class_network_sender.html">NetworkSender</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>AccessSender</b> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbfa3a1bb6e1272b5de495480d830b12"></a><!-- doxytag: member="NetworkSink::GetSender" ref="adbfa3a1bb6e1272b5de495480d830b12" args="() const " -->
const <a class="el" href="class_network_sender.html">NetworkSender</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetSender</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4eb8327e60a9dd329f23da707be42d99"></a><!-- doxytag: member="NetworkSink::BlockedBySpeedLimit" ref="a4eb8327e60a9dd329f23da707be42d99" args="() const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><b>BlockedBySpeedLimit</b> () const </td></tr>
<tr><td colspan="2"><h2><a name="pro-static-methods"></a>
Static Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0dc1428070dce0ce5651d775593ccce0"></a><!-- doxytag: member="NetworkSink::DecrementPropagation" ref="a0dc1428070dce0ce5651d775593ccce0" args="(int propagation)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>DecrementPropagation</b> (int propagation)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Network <a class="el" href="class_sink.html" title="A BufferedTransformation that doesn&#39;t produce any retrievable output.">Sink</a>. </p>

<p>Definition at line <a class="el" href="network_8h_source.html#l00188">188</a> of file <a class="el" href="network_8h_source.html">network.h</a>.</p>
</div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a4c1ccafa0cd1eb8ea8eebf8dbdbcda29"></a><!-- doxytag: member="NetworkSink::GetMaxWaitObjectCount" ref="a4c1ccafa0cd1eb8ea8eebf8dbdbcda29" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int NetworkSink::GetMaxWaitObjectCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>GetWaitObjects() must be called despite the 0 return from <a class="el" href="class_network_sink.html#a4c1ccafa0cd1eb8ea8eebf8dbdbcda29">GetMaxWaitObjectCount()</a>; the 0 is because the ScheduleEvent() method is used instead of adding a wait object </p>

<p>Reimplemented from <a class="el" href="class_limited_bandwidth.html#ad3f925ef7f2a9db58b8840f8a4f1f0cb">LimitedBandwidth</a>.</p>

<p>Definition at line <a class="el" href="network_8cpp_source.html#l00401">401</a> of file <a class="el" href="network_8cpp_source.html">network.cpp</a>.</p>

<p>References <a class="el" href="class_waitable.html#a221cf2a8063487b56b97c27197e16b12">Waitable::GetMaxWaitObjectCount()</a>.</p>

</div>
</div>
<a class="anchor" id="a5827a2d026f19314c777b068ce2b69fb"></a><!-- doxytag: member="NetworkSink::Put2" ref="a5827a2d026f19314c777b068ce2b69fb" args="(const byte *inString, size_t length, int messageEnd, bool blocking)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t NetworkSink::Put2 </td>
          <td>(</td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>inString</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>messageEnd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>blocking</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>input multiple bytes for blocking or non-blocking processing </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">messageEnd</td><td>means how many filters to signal MessageEnd to, including this one </td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="class_buffered_transformation.html#ad396dcb42260f23125a35ec0e5d17d55">BufferedTransformation</a>.</p>

<p>Definition at line <a class="el" href="network_8cpp_source.html#l00418">418</a> of file <a class="el" href="network_8cpp_source.html">network.cpp</a>.</p>

<p>References <a class="el" href="cryptlib_8h_source.html#l00096">INFINITE_TIME</a>, <a class="el" href="cryptlib_8h_source.html#l00128">Exception::OTHER_ERROR</a>, <a class="el" href="cryptlib_8h_source.html#l00785">BufferedTransformation::Put()</a>, and <a class="el" href="network_8cpp_source.html#l00162">NonblockingSink::TimedFlush()</a>.</p>

</div>
</div>
<a class="anchor" id="af5da8dc12d42cf6152588ab02de4d336"></a><!-- doxytag: member="NetworkSink::TimedFlush" ref="af5da8dc12d42cf6152588ab02de4d336" args="(unsigned long maxTime, size_t targetSize=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">lword NonblockingSink::TimedFlush </td>
          <td>(</td>
          <td class="paramtype">unsigned long&#160;</td>
          <td class="paramname"><em>maxTime</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>targetSize</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>flush to device for no more than maxTime milliseconds </p>
<p>This function will repeatedly attempt to flush data to some device, until the queue is empty, or a total of maxTime milliseconds have elapsed. If maxTime == 0, at least one attempt will be made to flush some data, but it is likely that not all queued data will be flushed, even if the device is ready to receive more data without waiting. If you want to flush as much data as possible without waiting for the device, call this function in a loop. For example: while (sink.TimedFlush(0) &gt; 0) {} </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes flushed </dd></dl>

<p>Definition at line <a class="el" href="network_8cpp_source.html#l00162">162</a> of file <a class="el" href="network_8cpp_source.html">network.cpp</a>.</p>

<p>References <a class="el" href="cryptlib_8h_source.html#l00096">INFINITE_TIME</a>.</p>

<p>Referenced by <a class="el" href="network_8cpp_source.html#l00418">Put2()</a>.</p>

</div>
</div>
<a class="anchor" id="af390325c959c3d6a2c03a447d6cd469d"></a><!-- doxytag: member="NetworkSink::CreatePutSpace" ref="af390325c959c3d6a2c03a447d6cd469d" args="(size_t &amp;size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual byte* BufferedTransformation::CreatePutSpace </td>
          <td>(</td>
          <td class="paramtype">size_t &amp;&#160;</td>
          <td class="paramname"><em>size</em></td><td>)</td>
          <td><code> [inline, virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>request space which can be written into by the caller, and then used as input to <a class="el" href="class_buffered_transformation.html#ae70658b0d271f8e114ac6c3cc9774ede" title="input a byte for processing">Put()</a> </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">size</td><td>is requested size (as a hint) for input, and size of the returned space for output</td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>The purpose of this method is to help avoid doing extra memory allocations. </dd></dl>

<p>Reimplemented in <a class="el" href="class_meter_filter.html#a49d92192dcbd3366ff0576159ea62e9d">MeterFilter</a>, <a class="el" href="class_hash_filter.html#a5c2f3a90ced66c835969ce1aa235b63e">HashFilter</a>, <a class="el" href="class_redirector.html#a09afd32c22cc2d4ef9ddc8650b8657f5">Redirector</a>, <a class="el" href="class_output_proxy.html#ae0400c5e91f8d8c50e2b4da7d15bf646">OutputProxy</a>, <a class="el" href="class_array_sink.html#a535e57a894542c088131bc84955c475b">ArraySink</a>, <a class="el" href="class_array_xor_sink.html#a39567ce27137cc06ed9a2b0a1c834f01">ArrayXorSink</a>, and <a class="el" href="class_byte_queue.html#ae6b49917c3217c5e3b8dd71d40498e5f">ByteQueue</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8h_source.html#l00799">799</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

<p>Referenced by <a class="el" href="filters_8h_source.html#l00662">ArrayXorSink::CreatePutSpace()</a>.</p>

</div>
</div>
<a class="anchor" id="a770bf11f26d4dec66423a7dc2d36843d"></a><!-- doxytag: member="NetworkSink::PutModifiable2" ref="a770bf11f26d4dec66423a7dc2d36843d" args="(byte *inString, size_t length, int messageEnd, bool blocking)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t BufferedTransformation::PutModifiable2 </td>
          <td>(</td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>inString</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>messageEnd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>blocking</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>input multiple bytes that may be modified by callee for blocking or non-blocking processing </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">messageEnd</td><td>means how many filters to signal MessageEnd to, including this one </td></tr>
  </table>
  </dd>
</dl>

<p>Reimplemented in <a class="el" href="class_meter_filter.html#a03c8af7442aa844e83e4c45397373f14">MeterFilter</a>, <a class="el" href="class_filter_with_buffered_input.html#abc7a44af560a17d30a48651683e18e6e">FilterWithBufferedInput</a>, and <a class="el" href="class_output_proxy.html#a0b7247fde67865b260d55763e14fdfa5">OutputProxy</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8h_source.html#l00817">817</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a class="anchor" id="a8a62b1b6c8f310363f32b05b20c306eb"></a><!-- doxytag: member="NetworkSink::Flush" ref="a8a62b1b6c8f310363f32b05b20c306eb" args="(bool hardFlush, int propagation=&#45;1, bool blocking=true)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BufferedTransformation::Flush </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>hardFlush</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>propagation</em> = <code>-1</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>blocking</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>flush buffered input and/or output </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">hardFlush</td><td>is used to indicate whether all data should be flushed </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>Hard flushes must be used with care. It means try to process and output everything, even if there may not be enough data to complete the action. For example, hard flushing a <a class="el" href="class_hex_decoder.html" title="Decode base 16 data back to bytes.">HexDecoder</a> would cause an error if you do it after inputing an odd number of hex encoded characters. For some types of filters, for example <a class="el" href="class_zlib_decompressor.html" title="ZLIB Decompressor (RFC 1950)">ZlibDecompressor</a>, hard flushes can only be done at "synchronization points". These synchronization points are positions in the data stream that are created by hard flushes on the corresponding reverse filters, in this example <a class="el" href="class_zlib_compressor.html" title="ZLIB Compressor (RFC 1950)">ZlibCompressor</a>. This is useful when zlib compressed data is moved across a network in packets and compression state is preserved across packets, as in the ssh2 protocol. </dd></dl>

<p>Reimplemented in <a class="el" href="class_filter.html#ad845deb5113d2bd04d109c05abfd3098">Filter</a>, <a class="el" href="class_redirector.html#a201243b803642ebfd392579953e75e92">Redirector</a>, <a class="el" href="class_output_proxy.html#aa6c68d78790266c60fa8b27176fbf969">OutputProxy</a>, <a class="el" href="class_secret_sharing.html#a670b6f5ba7ee9e1f029cd199f6722bb6">SecretSharing</a>, and <a class="el" href="class_information_dispersal.html#aa348e2dd4609c563196f89e1cf2ad35c">InformationDispersal</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8cpp_source.html#l00334">334</a> of file <a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a>.</p>

<p>References <a class="el" href="cryptlib_8h_source.html#l01011">BufferedTransformation::AttachedTransformation()</a>.</p>

</div>
</div>
<a class="anchor" id="aae4c5ae024419e31bfa0c24eb35b24c2"></a><!-- doxytag: member="NetworkSink::MessageSeriesEnd" ref="aae4c5ae024419e31bfa0c24eb35b24c2" args="(int propagation=&#45;1, bool blocking=true)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BufferedTransformation::MessageSeriesEnd </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>propagation</em> = <code>-1</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>blocking</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>mark end of a series of messages </p>
<p>There should be a MessageEnd immediately before MessageSeriesEnd. </p>

<p>Reimplemented in <a class="el" href="class_filter.html#aa42c62587dda61266ac8195d9c9edb47">Filter</a>, <a class="el" href="class_redirector.html#a34c42c1730d031f486e5d285c6dc3314">Redirector</a>, and <a class="el" href="class_output_proxy.html#aecf5c216c060f2e6adfeb4019e6ad797">OutputProxy</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8cpp_source.html#l00340">340</a> of file <a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a>.</p>

<p>References <a class="el" href="cryptlib_8h_source.html#l01011">BufferedTransformation::AttachedTransformation()</a>.</p>

</div>
</div>
<a class="anchor" id="ae77dc2fddb3ff142effb00eff3217581"></a><!-- doxytag: member="NetworkSink::SetAutoSignalPropagation" ref="ae77dc2fddb3ff142effb00eff3217581" args="(int propagation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void BufferedTransformation::SetAutoSignalPropagation </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>propagation</em></td><td>)</td>
          <td><code> [inline, virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>set propagation of automatically generated and transferred signals </p>
<p>propagation == 0 means do not automaticly generate signals </p>

<p>Reimplemented in <a class="el" href="class_source_template.html#af7f891477e9fcea66954f848b86de0a2">SourceTemplate&lt; T &gt;</a>, <a class="el" href="class_source_template.html#af7f891477e9fcea66954f848b86de0a2">SourceTemplate&lt; FileStore &gt;</a>, <a class="el" href="class_source_template.html#af7f891477e9fcea66954f848b86de0a2">SourceTemplate&lt; RandomNumberStore &gt;</a>, and <a class="el" href="class_source_template.html#af7f891477e9fcea66954f848b86de0a2">SourceTemplate&lt; StringStore &gt;</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8h_source.html#l00857">857</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a class="anchor" id="a6ec48acd2d2bda08baa4baa1c9a8a99c"></a><!-- doxytag: member="NetworkSink::MaxRetrievable" ref="a6ec48acd2d2bda08baa4baa1c9a8a99c" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">lword BufferedTransformation::MaxRetrievable </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>returns number of bytes that is currently ready for retrieval </p>
<p>All retrieval functions return the actual number of bytes retrieved, which is the lesser of the request number and <a class="el" href="class_buffered_transformation.html#a6ec48acd2d2bda08baa4baa1c9a8a99c" title="returns number of bytes that is currently ready for retrieval">MaxRetrievable()</a>. </p>

<p>Reimplemented in <a class="el" href="class_file_store.html#ac003753c1e1a312cdaa6149e5f53bfb9">FileStore</a>, <a class="el" href="class_random_number_store.html#afc8f3d56433d1ff117a4e07020f8ad3e">RandomNumberStore</a>, <a class="el" href="class_null_store.html#a0d34140b39d88bee6b9610724a7261ee">NullStore</a>, <a class="el" href="class_message_queue.html#a636d1842ab46a50cdb8517aec0df6c5d">MessageQueue</a>, <a class="el" href="class_byte_queue.html#a56f851da4a1e9518c2b7005807aecab8">ByteQueue</a>, and <a class="el" href="class_byte_queue_1_1_walker.html#a3c69dce9261b937f265bae9e8c26479f">ByteQueue::Walker</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8cpp_source.html#l00386">386</a> of file <a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a>.</p>

<p>References <a class="el" href="cryptlib_8h_source.html#l01011">BufferedTransformation::AttachedTransformation()</a>, <a class="el" href="cryptlib_8h_source.html#l00907">BufferedTransformation::CopyTo()</a>, and <a class="el" href="cryptlib_8cpp_source.html#l00386">BufferedTransformation::MaxRetrievable()</a>.</p>

<p>Referenced by <a class="el" href="filters_8h_source.html#l00696">RandomNumberStore::AnyRetrievable()</a>, <a class="el" href="integer_8cpp_source.html#l03146">Integer::BERDecode()</a>, and <a class="el" href="cryptlib_8cpp_source.html#l00386">BufferedTransformation::MaxRetrievable()</a>.</p>

</div>
</div>
<a class="anchor" id="a8dc8562950fd563f7c62d1f1e5ec6b1e"></a><!-- doxytag: member="NetworkSink::GetNextMessage" ref="a8dc8562950fd563f7c62d1f1e5ec6b1e" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BufferedTransformation::GetNextMessage </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>start retrieving the next message </p>
<p>Returns false if no more messages exist or this message is not completely retrieved. </p>

<p>Reimplemented in <a class="el" href="class_message_queue.html#a540da279953a13541a65c271888e27b7">MessageQueue</a>, and <a class="el" href="class_store.html#a5f578b4a2da5371a8a4b80a038a2d5ea">Store</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8cpp_source.html#l00475">475</a> of file <a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a>.</p>

<p>References <a class="el" href="cryptlib_8cpp_source.html#l00467">BufferedTransformation::AnyMessages()</a>, <a class="el" href="cryptlib_8h_source.html#l01011">BufferedTransformation::AttachedTransformation()</a>, and <a class="el" href="cryptlib_8cpp_source.html#l00475">BufferedTransformation::GetNextMessage()</a>.</p>

<p>Referenced by <a class="el" href="cryptlib_8cpp_source.html#l00475">BufferedTransformation::GetNextMessage()</a>, and <a class="el" href="cryptlib_8cpp_source.html#l00494">BufferedTransformation::TransferMessagesTo2()</a>.</p>

</div>
</div>
<a class="anchor" id="a20112606fc006c56f1561653cabd9542"></a><!-- doxytag: member="NetworkSink::Attachable" ref="a20112606fc006c56f1561653cabd9542" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool BufferedTransformation::Attachable </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>returns whether this object allows attachment </p>
<p>Some <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> objects (e.g. <a class="el" href="class_filter.html" title="provides an implementation of BufferedTransformation&#39;s attachment interface">Filter</a> objects) allow other <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> objects to be attached. When this is done, the first object instead of buffering its output, sents that output to the attached object as input. The entire attachment chain is deleted when the anchor object is destructed. </p>

<p>Reimplemented in <a class="el" href="class_filter.html#a6e7251247b5c2cc3b0c15e861cc88e16">Filter</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8h_source.html#l01009">1009</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

<p>Referenced by <a class="el" href="cryptlib_8cpp_source.html#l00650">BufferedTransformation::Attach()</a>.</p>

</div>
</div>
<a class="anchor" id="aded81bbe562f61932306a64e6122a6ca"></a><!-- doxytag: member="NetworkSink::Wait" ref="aded81bbe562f61932306a64e6122a6ca" args="(unsigned long milliseconds, CallStack const &amp;callStack)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Waitable::Wait </td>
          <td>(</td>
          <td class="paramtype">unsigned long&#160;</td>
          <td class="paramname"><em>milliseconds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_call_stack.html">CallStack</a> const &amp;&#160;</td>
          <td class="paramname"><em>callStack</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>wait on this object </p>
<p>same as creating an empty container, calling <a class="el" href="class_waitable.html#a97155f28db33d3dacc69dc453a01609a" title="put wait objects into container">GetWaitObjects()</a>, and calling <a class="el" href="class_waitable.html#aded81bbe562f61932306a64e6122a6ca" title="wait on this object">Wait()</a> on the container </p>

<p>Definition at line <a class="el" href="wait_8cpp_source.html#l00388">388</a> of file <a class="el" href="wait_8cpp_source.html">wait.cpp</a>.</p>

<p>References <a class="el" href="class_waitable.html#a97155f28db33d3dacc69dc453a01609a">Waitable::GetWaitObjects()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="network_8h_source.html">network.h</a></li>
<li><a class="el" href="network_8cpp_source.html">network.cpp</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Sun Oct 16 2011 for Crypto++ by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>