Botan
1.11.15
|
00001 /* 00002 * Output Buffer 00003 * (C) 1999-2007 Jack Lloyd 00004 * 2012 Markus Wanner 00005 * 00006 * Botan is released under the Simplified BSD License (see license.txt) 00007 */ 00008 00009 #ifndef BOTAN_OUTPUT_BUFFER_H__ 00010 #define BOTAN_OUTPUT_BUFFER_H__ 00011 00012 #include <botan/types.h> 00013 #include <botan/pipe.h> 00014 #include <deque> 00015 00016 namespace Botan { 00017 00018 /** 00019 * Container of output buffers for Pipe 00020 */ 00021 class Output_Buffers 00022 { 00023 public: 00024 size_t read(byte[], size_t, Pipe::message_id); 00025 size_t peek(byte[], size_t, size_t, Pipe::message_id) const; 00026 size_t get_bytes_read(Pipe::message_id) const; 00027 size_t remaining(Pipe::message_id) const; 00028 00029 void add(class SecureQueue*); 00030 void retire(); 00031 00032 Pipe::message_id message_count() const; 00033 00034 Output_Buffers(); 00035 ~Output_Buffers(); 00036 private: 00037 class SecureQueue* get(Pipe::message_id) const; 00038 00039 std::deque<SecureQueue*> buffers; 00040 Pipe::message_id offset; 00041 }; 00042 00043 } 00044 00045 #endif