📄 network_8h-source.html
字号:
00077 <span class="comment"></span>00078 <span class="comment">//! Network Sender</span><a name="l00079"></a><a class="code" href="class_network_sender.html">00079</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_network_sender.html">NetworkSender</a> : <span class="keyword">public</span> <a class="code" href="class_waitable.html">Waitable</a>00080 {00081 <span class="keyword">public</span>:00082 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> MustWaitToSend() {<span class="keywordflow">return</span> <span class="keyword">false</span>;}00083 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> MustWaitForResult() {<span class="keywordflow">return</span> <span class="keyword">false</span>;}00084 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Send(<span class="keyword">const</span> byte* buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufLen) =0;00085 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetSendResult() =0;00086 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SendEof() =0;00087 };00088 00089 <span class="preprocessor">#ifdef HIGHRES_TIMER_AVAILABLE</span>00090 <span class="preprocessor"></span><span class="comment"></span>00091 <span class="comment">//! Network Source</span><a name="l00092"></a><a class="code" href="class_network_source.html">00092</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_network_source.html">NetworkSource</a> : <span class="keyword">public</span> <a class="code" href="class_nonblocking_source.html">NonblockingSource</a>00093 {00094 <span class="keyword">public</span>:00095 <a class="code" href="class_network_source.html">NetworkSource</a>(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment);00096 <a name="l00097"></a><a class="code" href="class_network_source.html#_windows_pipe_sourcea8">00097</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_network_source.html#_windows_pipe_sourcea8">GetMaxWaitObjectCount</a>()<span class="keyword"> const</span>00098 <span class="keyword"> </span>{<span class="keywordflow">return</span> GetReceiver().<a class="code" href="class_waitable.html#_waitablea0">GetMaxWaitObjectCount</a>() + <a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()-><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz3_0">GetMaxWaitObjectCount</a>();}<a name="l00099"></a><a class="code" href="class_network_source.html#_windows_pipe_sourcea9">00099</a> <span class="keywordtype">void</span> <a class="code" href="class_network_source.html#_windows_pipe_sourcea9">GetWaitObjects</a>(<a class="code" href="class_wait_object_container.html">WaitObjectContainer</a> &container)00100 {AccessReceiver().<a class="code" href="class_waitable.html#_waitablea1">GetWaitObjects</a>(container); <a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()-><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz3_1">GetWaitObjects</a>(container);}00101 00102 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_network_source.html#_windows_pipe_sourcea10">GeneralPump2</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &byteCount, <span class="keywordtype">bool</span> blockingOutput=<span class="keyword">true</span>, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxTime=INFINITE_TIME, <span class="keywordtype">bool</span> checkDelimiter=<span class="keyword">false</span>, byte delimiter=<span class="charliteral">'\n'</span>);00103 <span class="keywordtype">bool</span> SourceExhausted()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetReceiver().<a class="code" href="class_network_receiver.html#_network_receivera4">EofReceived</a>();}00104 00105 <span class="keyword">protected</span>:00106 <span class="keyword">virtual</span> <a class="code" href="class_network_receiver.html">NetworkReceiver</a> & AccessReceiver() =0;00107 <span class="keyword">const</span> <a class="code" href="class_network_receiver.html">NetworkReceiver</a> & GetReceiver()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_cast<NetworkSource *>(<span class="keyword">this</span>)->AccessReceiver();}00108 00109 <span class="keyword">private</span>:00110 <span class="keyword">enum</span> {NORMAL, WAITING_FOR_RESULT, OUTPUT_BLOCKED};00111 <a class="code" href="class_sec_block.html">SecByteBlock</a> m_buf;00112 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_bufSize, m_putSize, m_state;00113 };00114 <span class="comment"></span>00115 <span class="comment">//! Network Sink</span><a name="l00116"></a><a class="code" href="class_network_sink.html">00116</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_network_sink.html">NetworkSink</a> : <span class="keyword">public</span> <a class="code" href="class_nonblocking_sink.html">NonblockingSink</a>00117 {00118 <span class="keyword">public</span>:00119 <a class="code" href="class_network_sink.html">NetworkSink</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxBufferSize, <span class="keywordtype">bool</span> autoFlush)00120 : m_maxBufferSize(maxBufferSize), m_autoFlush(autoFlush), m_needSendResult(<span class="keyword">false</span>), m_blockedBytes(0) {}00121 <a name="l00122"></a><a class="code" href="class_network_sink.html#_windows_pipe_sinka8">00122</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_network_sink.html#_windows_pipe_sinka8">GetMaxWaitObjectCount</a>()<span class="keyword"> const</span>00123 <span class="keyword"> </span>{<span class="keywordflow">return</span> GetSender().<a class="code" href="class_waitable.html#_waitablea0">GetMaxWaitObjectCount</a>();}<a name="l00124"></a><a class="code" href="class_network_sink.html#_windows_pipe_sinka9">00124</a> <span class="keywordtype">void</span> <a class="code" href="class_network_sink.html#_windows_pipe_sinka9">GetWaitObjects</a>(<a class="code" href="class_wait_object_container.html">WaitObjectContainer</a> &container)00125 {<span class="keywordflow">if</span> (m_blockedBytes || !m_buffer.<a class="code" href="class_byte_queue.html#_d_e_r_set_encodera16">IsEmpty</a>()) AccessSender().<a class="code" href="class_waitable.html#_waitablea1">GetWaitObjects</a>(container);}00126 00127 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_network_sink.html#_windows_pipe_sinka10">Put2</a>(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking);00128 00129 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_network_sink.html#_windows_pipe_sinka11">TimedFlush</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxTime, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> targetSize = 0);00130 00131 <span class="keywordtype">void</span> SetMaxBufferSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxBufferSize) {m_maxBufferSize = maxBufferSize;}00132 <span class="keywordtype">void</span> SetAutoFlush(<span class="keywordtype">bool</span> autoFlush = <span class="keyword">true</span>) {m_autoFlush = autoFlush;}00133 00134 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetMaxBufferSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_maxBufferSize;}00135 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetCurrentBufferSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_buffer.<a class="code" href="class_byte_queue.html#_d_e_r_set_encodera15">CurrentSize</a>();}00136 00137 <span class="keyword">protected</span>:00138 <span class="keyword">virtual</span> <a class="code" href="class_network_sender.html">NetworkSender</a> & AccessSender() =0;00139 <span class="keyword">const</span> <a class="code" href="class_network_sender.html">NetworkSender</a> & GetSender()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_cast<NetworkSink *>(<span class="keyword">this</span>)->AccessSender();}00140 00141 <span class="keyword">private</span>:00142 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_maxBufferSize;00143 <span class="keywordtype">bool</span> m_autoFlush, m_needSendResult;00144 <a class="code" href="class_byte_queue.html">ByteQueue</a> m_buffer;00145 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_blockedBytes;00146 };00147 00148 <span class="preprocessor">#endif // #ifdef HIGHRES_TIMER_AVAILABLE</span>00149 <span class="preprocessor"></span>00150 NAMESPACE_END00151 00152 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:21 2003 for Crypto++ by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.2 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -