⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 network_8h-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 2 页
字号:
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>()-&gt;<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> &amp;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>()-&gt;<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> &amp;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> &amp; AccessReceiver() =0;00107         <span class="keyword">const</span> <a class="code" href="class_network_receiver.html">NetworkReceiver</a> &amp; GetReceiver()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_cast&lt;NetworkSource *&gt;(<span class="keyword">this</span>)-&gt;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> &amp;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> &amp; AccessSender() =0;00139         <span class="keyword">const</span> <a class="code" href="class_network_sender.html">NetworkSender</a> &amp; GetSender()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_cast&lt;NetworkSink *&gt;(<span class="keyword">this</span>)-&gt;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 + -