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

📄 network_8h-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!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&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;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&lt;Source&gt;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&lt;Source&gt;(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> &amp;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> &amp;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> &amp;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) &gt; 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 + -