📄 socketft_8h-source.html
字号:
<a name="l00148"></a>00148 <span class="preprocessor">#ifdef USE_WINDOWS_STYLE_SOCKETS</span><a name="l00149"></a>00149 <span class="preprocessor"></span> <a class="code" href="class_windows_handle.html" title="Windows Handle.">WindowsHandle</a> m_event;<a name="l00150"></a>00150 OVERLAPPED m_overlapped;<a name="l00151"></a>00151 <span class="keywordtype">bool</span> m_resultPending;<a name="l00152"></a>00152 DWORD m_lastResult;<a name="l00153"></a>00153 <span class="preprocessor">#else</span><a name="l00154"></a>00154 <span class="preprocessor"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_lastResult;<a name="l00155"></a>00155 <span class="preprocessor">#endif</span><a name="l00156"></a>00156 <span class="preprocessor"></span>};<a name="l00157"></a>00157 <a name="l00158"></a><a class="code" href="class_socket_sender.html">00158</a> <span class="keyword">class </span><a class="code" href="class_socket_sender.html">SocketSender</a> : <span class="keyword">public</span> <a class="code" href="class_network_sender.html" title="Network Sender.">NetworkSender</a><a name="l00159"></a>00159 {<a name="l00160"></a>00160 <span class="keyword">public</span>:<a name="l00161"></a>00161 <a class="code" href="class_socket_sender.html#c85881f31c51b8d7efe88c06c6954421">SocketSender</a>(<a class="code" href="class_socket.html" title="wrapper for Windows or Berkeley Sockets">Socket</a> &s);<a name="l00162"></a>00162 <a name="l00163"></a>00163 <span class="preprocessor">#ifdef USE_BERKELEY_STYLE_SOCKETS</span><a name="l00164"></a>00164 <span class="preprocessor"></span> <span class="keywordtype">bool</span> <a class="code" href="class_network_sender.html#fb86f4dc8d5ba76ad18f3be4a20d768e">MustWaitToSend</a>() {<span class="keywordflow">return</span> <span class="keyword">true</span>;}<a name="l00165"></a>00165 <span class="preprocessor">#else</span><a name="l00166"></a>00166 <span class="preprocessor"></span> <a class="code" href="class_socket_sender.html#57da8adfa5930965b8d84197d8e5328c">~SocketSender</a>();<a name="l00167"></a><a class="code" href="class_socket_sender.html#c410a6519c6d54a6445a915850518aff">00167</a> <span class="keywordtype">bool</span> <a class="code" href="class_socket_sender.html#c410a6519c6d54a6445a915850518aff">MustWaitForResult</a>() {<span class="keywordflow">return</span> <span class="keyword">true</span>;}<a name="l00168"></a><a class="code" href="class_socket_sender.html#c2a1af3e61c558a14d17ab39dddb20df">00168</a> <span class="keywordtype">bool</span> <a class="code" href="class_socket_sender.html#c2a1af3e61c558a14d17ab39dddb20df">MustWaitForEof</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }<a name="l00169"></a>00169 <span class="keywordtype">bool</span> <a class="code" href="class_socket_sender.html#03172911e1283f93f662d664613ae12e">EofSent</a>();<a name="l00170"></a>00170 <span class="preprocessor">#endif</span><a name="l00171"></a>00171 <span class="preprocessor"></span> <span class="keywordtype">void</span> <a class="code" href="class_socket_sender.html#40cbddeb410feeee718d0edc36cdb98e">Send</a>(<span class="keyword">const</span> byte* buf, <span class="keywordtype">size_t</span> bufLen);<a name="l00172"></a>00172 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_socket_sender.html#57b0e31fa669336e1ad07070a339a4d7">GetSendResult</a>();<a name="l00173"></a>00173 <span class="keywordtype">void</span> <a class="code" href="class_socket_sender.html#762d52e4d2a4b2692cf546d6428e7466">SendEof</a>();<a name="l00174"></a>00174 <a name="l00175"></a><a class="code" href="class_socket_sender.html#2107ed320a6ccf838a610211764b4941">00175</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_socket_sender.html#2107ed320a6ccf838a610211764b4941" title="maximum number of wait objects that this object can return">GetMaxWaitObjectCount</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> 1;}<a name="l00176"></a>00176 <span class="keywordtype">void</span> <a class="code" href="class_socket_sender.html#9f5d2a6bb5665c5b93d857485c8348e4" title="put wait objects into container">GetWaitObjects</a>(<a class="code" href="class_wait_object_container.html" title="container of wait objects">WaitObjectContainer</a> &container, <a class="code" href="class_call_stack.html">CallStack</a> <span class="keyword">const</span>& callStack);<a name="l00177"></a>00177 <a name="l00178"></a>00178 <span class="keyword">private</span>:<a name="l00179"></a>00179 <a class="code" href="class_socket.html" title="wrapper for Windows or Berkeley Sockets">Socket</a> &m_s;<a name="l00180"></a>00180 <span class="preprocessor">#ifdef USE_WINDOWS_STYLE_SOCKETS</span><a name="l00181"></a>00181 <span class="preprocessor"></span> <a class="code" href="class_windows_handle.html" title="Windows Handle.">WindowsHandle</a> m_event;<a name="l00182"></a>00182 OVERLAPPED m_overlapped;<a name="l00183"></a>00183 <span class="keywordtype">bool</span> m_resultPending;<a name="l00184"></a>00184 DWORD m_lastResult;<a name="l00185"></a>00185 <span class="preprocessor">#else</span><a name="l00186"></a>00186 <span class="preprocessor"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_lastResult;<a name="l00187"></a>00187 <span class="preprocessor">#endif</span><a name="l00188"></a>00188 <span class="preprocessor"></span>};<a name="l00189"></a>00189 <span class="comment"></span><a name="l00190"></a>00190 <span class="comment">//! socket-based implementation of NetworkSource</span><a name="l00191"></a><a class="code" href="class_socket_source.html">00191</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_socket_source.html" title="socket-based implementation of NetworkSource">SocketSource</a> : <span class="keyword">public</span> <a class="code" href="class_network_source.html" title="Network Source.">NetworkSource</a>, <span class="keyword">public</span> <a class="code" href="class_socket.html" title="wrapper for Windows or Berkeley Sockets">Socket</a><a name="l00192"></a>00192 {<a name="l00193"></a>00193 <span class="keyword">public</span>:<a name="l00194"></a><a class="code" href="class_socket_source.html#22da4bd5ab7351abaea15a5a429c137e">00194</a> <a class="code" href="class_socket_source.html#22da4bd5ab7351abaea15a5a429c137e">SocketSource</a>(socket_t s = INVALID_SOCKET, <span class="keywordtype">bool</span> pumpAll = <span class="keyword">false</span>, <a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> *attachment = NULL)<a name="l00195"></a>00195 : <a class="code" href="class_network_source.html" title="Network Source.">NetworkSource</a>(attachment), <a class="code" href="class_socket.html" title="wrapper for Windows or Berkeley Sockets">Socket</a>(s), m_receiver(*this)<a name="l00196"></a>00196 {<a name="l00197"></a>00197 <span class="keywordflow">if</span> (pumpAll)<a name="l00198"></a>00198 <a class="code" href="class_source.html#78f3f645fc7a1af7e7a814d8a7d22a69">PumpAll</a>();<a name="l00199"></a>00199 }<a name="l00200"></a>00200 <a name="l00201"></a>00201 <span class="keyword">private</span>:<a name="l00202"></a>00202 <a class="code" href="class_network_receiver.html" title="Network Receiver.">NetworkReceiver</a> & AccessReceiver() {<span class="keywordflow">return</span> m_receiver;}<a name="l00203"></a>00203 <a class="code" href="class_socket_receiver.html">SocketReceiver</a> m_receiver;<a name="l00204"></a>00204 };<a name="l00205"></a>00205 <span class="comment"></span><a name="l00206"></a>00206 <span class="comment">//! socket-based implementation of NetworkSink</span><a name="l00207"></a><a class="code" href="class_socket_sink.html">00207</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_socket_sink.html" title="socket-based implementation of NetworkSink">SocketSink</a> : <span class="keyword">public</span> <a class="code" href="class_network_sink.html" title="Network Sink.">NetworkSink</a>, <span class="keyword">public</span> <a class="code" href="class_socket.html" title="wrapper for Windows or Berkeley Sockets">Socket</a><a name="l00208"></a>00208 {<a name="l00209"></a>00209 <span class="keyword">public</span>:<a name="l00210"></a><a class="code" href="class_socket_sink.html#40fb1012fbc8b8b52a7b73746df8dae6">00210</a> <a class="code" href="class_socket_sink.html#40fb1012fbc8b8b52a7b73746df8dae6">SocketSink</a>(socket_t s=INVALID_SOCKET, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxBufferSize=0, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> autoFlushBound=16*1024)<a name="l00211"></a>00211 : <a class="code" href="class_network_sink.html" title="Network Sink.">NetworkSink</a>(maxBufferSize, autoFlushBound), <a class="code" href="class_socket.html" title="wrapper for Windows or Berkeley Sockets">Socket</a>(s), m_sender(*this) {}<a name="l00212"></a>00212 <a name="l00213"></a><a class="code" href="class_socket_sink.html#c85ce68ade829858ae3a18cb39c4cda5">00213</a> <span class="keywordtype">void</span> <a class="code" href="class_socket_sink.html#c85ce68ade829858ae3a18cb39c4cda5">SendEof</a>() {<a class="code" href="class_socket.html#44fa23c55391354e5ce763810048f534">ShutDown</a>(SD_SEND);}<a name="l00214"></a>00214 <a name="l00215"></a>00215 <span class="keyword">private</span>:<a name="l00216"></a>00216 <a class="code" href="class_network_sender.html" title="Network Sender.">NetworkSender</a> & AccessSender() {<span class="keywordflow">return</span> m_sender;}<a name="l00217"></a>00217 <a class="code" href="class_socket_sender.html">SocketSender</a> m_sender;<a name="l00218"></a>00218 };<a name="l00219"></a>00219 <a name="l00220"></a>00220 NAMESPACE_END<a name="l00221"></a>00221 <a name="l00222"></a>00222 <span class="preprocessor">#endif // #ifdef SOCKETS_AVAILABLE</span><a name="l00223"></a>00223 <span class="preprocessor"></span><a name="l00224"></a>00224 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Jun 1 11:11:25 2007 for Crypto++ by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -