📄 filters_8h-source.html
字号:
00104 <span class="keywordtype">bool</span> m_transparent;00105 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> m_currentMessageBytes, m_totalBytes;00106 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_currentSeriesMessages, m_totalMessages, m_totalMessageSeries;00107 };00108 <span class="comment"></span>00109 <span class="comment">//! .</span><a name="l00110"></a><a class="code" href="class_transparent_filter.html">00110</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL TransparentFilter : <span class="keyword">public</span> MeterFilter00111 {00112 <span class="keyword">public</span>:00113 TransparentFilter(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment=NULL) : MeterFilter(attachment, <span class="keyword">true</span>) {}00114 };00115 <span class="comment"></span>00116 <span class="comment">//! .</span><a name="l00117"></a><a class="code" href="class_opaque_filter.html">00117</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL OpaqueFilter : <span class="keyword">public</span> MeterFilter00118 {00119 <span class="keyword">public</span>:00120 OpaqueFilter(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment=NULL) : MeterFilter(attachment, <span class="keyword">false</span>) {}00121 };00122 <span class="comment"></span>00123 <span class="comment">/*! FilterWithBufferedInput divides up the input stream into</span>00124 <span class="comment"> a first block, a number of middle blocks, and a last block.</span>00125 <span class="comment"> First and last blocks are optional, and middle blocks may</span>00126 <span class="comment"> be a stream instead (i.e. blockSize == 1).</span>00127 <span class="comment">*/</span><a name="l00128"></a><a class="code" href="class_filter_with_buffered_input.html">00128</a> <span class="keyword">class </span>CRYPTOPP_DLL FilterWithBufferedInput : <span class="keyword">public</span> Filter00129 {00130 <span class="keyword">public</span>:00131 FilterWithBufferedInput(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment);<span class="comment"></span>00132 <span class="comment"> //! firstSize and lastSize may be 0, blockSize must be at least 1</span>00133 <span class="comment"></span> FilterWithBufferedInput(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lastSize, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment);00134 00135 <span class="keywordtype">void</span> IsolatedInitialize(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters);<a name="l00136"></a><a class="code" href="class_filter_with_buffered_input.html#_stream_transformation_filtera6">00136</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_unflushable_3_01_sink_01_4z1_9">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)00137 {00138 <span class="keywordflow">return</span> PutMaybeModifiable(const_cast<byte *>(inString), length, messageEnd, blocking, <span class="keyword">false</span>);00139 }<a name="l00140"></a><a class="code" href="class_filter_with_buffered_input.html#_stream_transformation_filtera7">00140</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_9">PutModifiable2</a>(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)00141 {00142 <span class="keywordflow">return</span> PutMaybeModifiable(inString, length, messageEnd, blocking, <span class="keyword">true</span>);00143 }<span class="comment"></span>00144 <span class="comment"> /*! calls ForceNextPut() if hardFlush is true */</span>00145 <span class="keywordtype">bool</span> IsolatedFlush(<span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">bool</span> blocking);00146 <span class="comment"></span>00147 <span class="comment"> /*! the input buffer may contain more than blockSize bytes if lastSize != 0</span>00148 <span class="comment"> ForceNextPut() forces a call to NextPut() if this is the case </span>00149 <span class="comment"> */</span>00150 <span class="keywordtype">void</span> ForceNextPut();00151 00152 <span class="keyword">protected</span>:00153 <span class="keywordtype">bool</span> DidFirstPut() {<span class="keywordflow">return</span> m_firstInputDone;}00154 00155 <span class="keyword">virtual</span> <span class="keywordtype">void</span> InitializeDerivedAndReturnNewSizes(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &firstSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &blockSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &lastSize)00156 {InitializeDerived(parameters);}00157 <span class="keyword">virtual</span> <span class="keywordtype">void</span> InitializeDerived(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters) {}00158 <span class="comment">// FirstPut() is called if (firstSize != 0 and totalLength >= firstSize)</span>00159 <span class="comment">// or (firstSize == 0 and (totalLength > 0 or a MessageEnd() is received))</span>00160 <span class="keyword">virtual</span> <span class="keywordtype">void</span> FirstPut(<span class="keyword">const</span> byte *inString) =0;00161 <span class="comment">// NextPut() is called if totalLength >= firstSize+blockSize+lastSize</span>00162 <span class="keyword">virtual</span> <span class="keywordtype">void</span> NextPutSingle(<span class="keyword">const</span> byte *inString) {assert(<span class="keyword">false</span>);}00163 <span class="comment">// Same as NextPut() except length can be a multiple of blockSize</span>00164 <span class="comment">// Either NextPut() or NextPutMultiple() must be overriden</span>00165 <span class="keyword">virtual</span> <span class="keywordtype">void</span> NextPutMultiple(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00166 <span class="comment">// Same as NextPutMultiple(), but inString can be modified</span>00167 <span class="keyword">virtual</span> <span class="keywordtype">void</span> NextPutModifiable(byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length)00168 {NextPutMultiple(inString, length);}00169 <span class="comment">// LastPut() is always called</span>00170 <span class="comment">// if totalLength < firstSize then length == totalLength</span>00171 <span class="comment">// else if totalLength <= firstSize+lastSize then length == totalLength-firstSize</span>00172 <span class="comment">// else lastSize <= length < lastSize+blockSize</span>00173 <span class="keyword">virtual</span> <span class="keywordtype">void</span> LastPut(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length) =0;00174 <span class="keyword">virtual</span> <span class="keywordtype">void</span> FlushDerived() {}00175 00176 <span class="keyword">private</span>:00177 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> PutMaybeModifiable(byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking, <span class="keywordtype">bool</span> modifiable);00178 <span class="keywordtype">void</span> NextPutMaybeModifiable(byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">bool</span> modifiable)00179 {00180 <span class="keywordflow">if</span> (modifiable) NextPutModifiable(inString, length);00181 <span class="keywordflow">else</span> NextPutMultiple(inString, length);00182 }00183 00184 <span class="comment">// This function should no longer be used, put this here to cause a compiler error</span>00185 <span class="comment">// if someone tries to override NextPut().</span>00186 <span class="keyword">virtual</span> <span class="keywordtype">int</span> NextPut(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length) {assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0;}00187 00188 <span class="keyword">class </span>BlockQueue00189 {00190 <span class="keyword">public</span>:00191 <span class="keywordtype">void</span> ResetQueue(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxBlocks);00192 byte *GetBlock();00193 byte *GetContigousBlocks(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &numberOfBytes);00194 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetAll(byte *outString);00195 <span class="keywordtype">void</span> Put(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00196 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CurrentSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_size;}00197 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MaxSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_buffer.size();}00198 00199 <span class="keyword">private</span>:00200 <a class="code" href="class_sec_block.html">SecByteBlock</a> m_buffer;00201 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_blockSize, m_maxBlocks, m_size;00202 byte *m_begin;00203 };00204 00205 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_firstSize, m_blockSize, m_lastSize;00206 <span class="keywordtype">bool</span> m_firstInputDone;00207 BlockQueue m_queue;00208 };00209 <span class="comment"></span>00210 <span class="comment">//! .</span><a name="l00211"></a><a class="code" href="class_filter_with_input_queue.html">00211</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL FilterWithInputQueue : <span class="keyword">public</span> Filter00212 {00213 <span class="keyword">public</span>:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -