Botan  1.11.15
src/lib/filters/out_buf.h
Go to the documentation of this file.
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