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>()-><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 &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>()-><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>(&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>()-><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>()-><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>()-><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>()-><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>()-><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>()-><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>()-><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> &target, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &messageCount, <span class="keyword">const</span> std::string &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>()-><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 < maxMessages && <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 > 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> &target, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keyword">const</span> std::string &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>()-><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>()-><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 + -
显示快捷键?