📄 network_8h-source.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Crypto++: network.h Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.2 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Compound Members</a> | <a class="qindex" href="globals.html">File Members</a></div><h1>network.h</h1><div class="fragment"><pre>00001 <span class="preprocessor">#ifndef CRYPTOPP_NETWORK_H</span>00002 <span class="preprocessor"></span><span class="preprocessor">#define CRYPTOPP_NETWORK_H</span>00003 <span class="preprocessor"></span>00004 <span class="preprocessor">#include "filters.h"</span>00005 <span class="preprocessor">#include "hrtimer.h"</span>00006 00007 NAMESPACE_BEGIN(CryptoPP)00008 00009 <span class="comment">//! a Source class that can pump from a device for a specified amount of time.</span><a name="l00010"></a><a class="code" href="class_nonblocking_source.html">00010</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_nonblocking_source.html">NonblockingSource</a> : <span class="keyword">public</span> AutoSignaling<Source>00011 {00012 <span class="keyword">public</span>:00013 <a class="code" href="class_nonblocking_source.html">NonblockingSource</a>(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment)00014 : AutoSignaling<Source>(attachment), m_messageEndSent(<span class="keyword">false</span>) {}00015 <span class="comment"></span>00016 <span class="comment"> //! \name NONBLOCKING SOURCE</span>00017 <span class="comment"></span><span class="comment"> //@{</span>00018 <span class="comment"></span><span class="comment"></span>00019 <span class="comment"> //! pump up to maxSize bytes using at most maxTime milliseconds</span>00020 <span class="comment"></span><span class="comment"> /*! If checkDelimiter is true, pump up to delimiter, which itself is not extracted or pumped. */</span>00021 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_nonblocking_source.html#_nonblocking_sourcez53_0">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=<a class="code" href="cryptlib_8h.html#a0">INFINITE_TIME</a>, <span class="keywordtype">bool</span> checkDelimiter=<span class="keyword">false</span>, byte delimiter=<span class="charliteral">'\n'</span>) =0;00022 00023 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> GeneralPump(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxSize=ULONG_MAX, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxTime=<a class="code" href="cryptlib_8h.html#a0">INFINITE_TIME</a>, <span class="keywordtype">bool</span> checkDelimiter=<span class="keyword">false</span>, byte delimiter=<span class="charliteral">'\n'</span>)00024 {00025 <a class="code" href="class_nonblocking_source.html#_nonblocking_sourcez53_0">GeneralPump2</a>(maxSize, <span class="keyword">true</span>, maxTime, checkDelimiter, delimiter);00026 <span class="keywordflow">return</span> maxSize;00027 }00028 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> TimedPump(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxTime)00029 {<span class="keywordflow">return</span> GeneralPump(ULONG_MAX, maxTime);}00030 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> PumpLine(byte delimiter=<span class="charliteral">'\n'</span>, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxSize=1024)00031 {<span class="keywordflow">return</span> GeneralPump(maxSize, <a class="code" href="cryptlib_8h.html#a0">INFINITE_TIME</a>, <span class="keyword">true</span>, delimiter);}00032 00033 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Pump2(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &byteCount, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>)00034 {<span class="keywordflow">return</span> <a class="code" href="class_nonblocking_source.html#_nonblocking_sourcez53_0">GeneralPump2</a>(byteCount, blocking, blocking ? <a class="code" href="cryptlib_8h.html#a0">INFINITE_TIME</a> : 0);}00035 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> PumpMessages2(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &messageCount, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>);<span class="comment"></span>00036 <span class="comment"> //@}</span>00037 <span class="comment"></span>00038 <span class="keyword">private</span>:00039 <span class="keywordtype">bool</span> m_messageEndSent;00040 };00041 <span class="comment"></span>00042 <span class="comment">//! Network Receiver</span><a name="l00043"></a><a class="code" href="class_network_receiver.html">00043</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_network_receiver.html">NetworkReceiver</a> : <span class="keyword">public</span> <a class="code" href="class_waitable.html">Waitable</a>00044 {00045 <span class="keyword">public</span>:00046 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> MustWaitToReceive() {<span class="keywordflow">return</span> <span class="keyword">false</span>;}00047 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> MustWaitForResult() {<span class="keywordflow">return</span> <span class="keyword">false</span>;}00048 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Receive(byte* buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufLen) =0;00049 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetReceiveResult() =0;00050 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> EofReceived() <span class="keyword">const</span> =0;00051 };00052 <span class="comment"></span>00053 <span class="comment">//! a Sink class that queues input and can flush to a device for a specified amount of time.</span><a name="l00054"></a><a class="code" href="class_nonblocking_sink.html">00054</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_nonblocking_sink.html">NonblockingSink</a> : <span class="keyword">public</span> <a class="code" href="class_sink.html">Sink</a>00055 {00056 <span class="keyword">public</span>:00057 <span class="keywordtype">bool</span> IsolatedFlush(<span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">bool</span> blocking);00058 <span class="comment"></span>00059 <span class="comment"> //! flush to device for no more than maxTime milliseconds</span>00060 <span class="comment"></span><span class="comment"> /*! This function will repeatedly attempt to flush data to some device, until</span>00061 <span class="comment"> the queue is empty, or a total of maxTime milliseconds have elapsed.</span>00062 <span class="comment"> If maxTime == 0, at least one attempt will be made to flush some data, but</span>00063 <span class="comment"> it is likely that not all queued data will be flushed, even if the device</span>00064 <span class="comment"> is ready to receive more data without waiting. If you want to flush as much data</span>00065 <span class="comment"> as possible without waiting for the device, call this function in a loop.</span>00066 <span class="comment"> For example: while (sink.TimedFlush(0) > 0) {}</span>00067 <span class="comment"> \return number of bytes flushed</span>00068 <span class="comment"> */</span>00069 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_nonblocking_sink.html#_nonblocking_sinka1">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) =0;00070 00071 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetMaxBufferSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxBufferSize) =0;00072 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetAutoFlush(<span class="keywordtype">bool</span> autoFlush = <span class="keyword">true</span>) =0;00073 00074 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetMaxBufferSize() <span class="keyword">const</span> =0;00075 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetCurrentBufferSize() <span class="keyword">const</span> =0;00076 };
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -