cryptlib_8cpp-source.html

来自「Crypto++是一个非常强大的密码学库,主要是功能全」· HTML 代码 · 共 649 行 · 第 1/5 页

HTML
649
字号
00254 }00255 <a name="l00256"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_3">00256</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_2">BufferedTransformation::Get</a>(byte *outString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getMax)00257 {00258         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00259                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_2">Get</a>(outString, getMax);00260         <span class="keywordflow">else</span>00261         {00262                 <a class="code" href="class_array_sink.html">ArraySink</a> arraySink(outString, getMax);00263                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_10">TransferTo</a>(arraySink, getMax);00264         }00265 }00266 <a name="l00267"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_4">00267</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_4">BufferedTransformation::Peek</a>(byte &amp;outByte)<span class="keyword"> const</span>00268 <span class="keyword"></span>{00269         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00270                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_4">Peek</a>(outByte);00271         <span class="keywordflow">else</span>00272                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_4">Peek</a>(&amp;outByte, 1);00273 }00274 <a name="l00275"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_5">00275</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_4">BufferedTransformation::Peek</a>(byte *outString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> peekMax)<span class="keyword"> const</span>00276 <span class="keyword"></span>{00277         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00278                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_4">Peek</a>(outString, peekMax);00279         <span class="keywordflow">else</span>00280         {00281                 <a class="code" href="class_array_sink.html">ArraySink</a> arraySink(outString, peekMax);00282                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_12">CopyTo</a>(arraySink, peekMax);00283         }00284 }00285 <a name="l00286"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_11">00286</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_11">BufferedTransformation::Skip</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> skipMax)00287 {00288         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00289                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_11">Skip</a>(skipMax);00290         <span class="keywordflow">else</span>00291                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_10">TransferTo</a>(TheBitBucket(), skipMax);00292 }00293 00294 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> BufferedTransformation::TotalBytesRetrievable()<span class="keyword"> const</span>00295 <span class="keyword"></span>{00296         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00297                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_0">TotalBytesRetrievable</a>();00298         <span class="keywordflow">else</span>00299                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_0">MaxRetrievable</a>();00300 }00301 <a name="l00302"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_1">00302</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_1">BufferedTransformation::NumberOfMessages</a>()<span class="keyword"> const</span>00303 <span class="keyword"></span>{00304         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00305                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_1">NumberOfMessages</a>();00306         <span class="keywordflow">else</span>00307                 <span class="keywordflow">return</span> CopyMessagesTo(TheBitBucket());00308 }00309 <a name="l00310"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_2">00310</a> <span class="keywordtype">bool</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_2">BufferedTransformation::AnyMessages</a>()<span class="keyword"> const</span>00311 <span class="keyword"></span>{00312         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00313                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_2">AnyMessages</a>();00314         <span class="keywordflow">else</span>00315                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_1">NumberOfMessages</a>() != 0;00316 }00317 <a name="l00318"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_3">00318</a> <span class="keywordtype">bool</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_3">BufferedTransformation::GetNextMessage</a>()00319 {00320         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00321                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_3">GetNextMessage</a>();00322         <span class="keywordflow">else</span>00323         {00324                 assert(!<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_2">AnyMessages</a>());00325                 <span class="keywordflow">return</span> <span class="keyword">false</span>;00326         }00327 }00328 <a name="l00329"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_4">00329</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_4">BufferedTransformation::SkipMessages</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count)00330 {00331         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00332                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_4">SkipMessages</a>(count);00333         <span class="keywordflow">else</span>00334                 <span class="keywordflow">return</span> TransferMessagesTo(TheBitBucket(), count);00335 }00336 00337 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferedTransformation::TransferMessagesTo2(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;messageCount, <span class="keyword">const</span> std::string &amp;channel, <span class="keywordtype">bool</span> blocking)00338 {00339         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00340                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz11_0">TransferMessagesTo2</a>(target, messageCount, channel, blocking);00341         <span class="keywordflow">else</span>00342         {00343                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxMessages = messageCount;00344                 <span class="keywordflow">for</span> (messageCount=0; messageCount &lt; maxMessages &amp;&amp; <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_2">AnyMessages</a>(); messageCount++)00345                 {00346                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockedBytes;00347                         <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> transferedBytes;00348 00349                         <span class="keywordflow">while</span> (<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_1">AnyRetrievable</a>())00350                         {00351                                 transferedBytes = ULONG_MAX;00352                                 blockedBytes = <a class="code" href="class_buffered_transformation.html#_storez11_0">TransferTo2</a>(target, transferedBytes, channel, blocking);00353                                 <span class="keywordflow">if</span> (blockedBytes &gt; 0)00354                                         <span class="keywordflow">return</span> blockedBytes;00355                         }00356 00357                         <span class="keywordflow">if</span> (target.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz13_5">ChannelMessageEnd</a>(channel, GetAutoSignalPropagation(), blocking))00358                                 <span class="keywordflow">return</span> 1;00359 00360                         <span class="keywordtype">bool</span> result = <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_3">GetNextMessage</a>();00361                         assert(result);00362                 }00363                 <span class="keywordflow">return</span> 0;00364         }00365 }00366 00367 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferedTransformation::CopyMessagesTo(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keyword">const</span> std::string &amp;channel)<span class="keyword"> const</span>00368 <span class="keyword"></span>{00369         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00370                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_6">CopyMessagesTo</a>(target, count, channel);00371         <span class="keywordflow">else</span>00372                 <span class="keywordflow">return</span> 0;00373 }00374 00375 <span class="keywordtype">void</span> BufferedTransformation::SkipAll()00376 {00377         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00378                 <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_7">SkipAll</a>();00379         <span class="keywordflow">else</span>00380         {00381                 <span class="keywordflow">while</span> (<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_4">SkipMessages</a>()) {}00382                 <span class="keywordflow">while</span> (<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_11">Skip</a>()) {}00383         }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?