22 #ifndef BUNDLESTREAMBUF_H_
23 #define BUNDLESTREAMBUF_H_
26 #include <ibrcommon/thread/Conditional.h>
42 class BundleStreamBuf :
public std::basic_streambuf<char, std::char_traits<char> >
56 virtual std::char_traits<char>::int_type
overflow(std::char_traits<char>::int_type = std::char_traits<char>::eof());
57 virtual std::char_traits<char>::int_type
underflow();
66 bool operator==(
const Chunk& other)
const;
67 bool operator<(
const Chunk& other)
const;
77 void flushPayload(
bool final =
false);
79 static void append(ibrcommon::BLOB::Reference &ref,
const char* data,
const dtn::data::Length &length);
84 std::vector<char> _in_buf;
86 std::vector<char> _out_buf;
90 ibrcommon::BLOB::Reference _chunk_payload;
92 std::set<Chunk> _chunks;
106 bool _last_chunk_received;
void setTimeout(const dtn::data::Timeout &timeout)
virtual ~BundleStreamBuf()
BundleStreamBuf(BundleStreamBufCallback &callback, const dtn::data::Length chunk_size=4096, bool wait_seq_zero=false)
virtual std::char_traits< char >::int_type underflow()
virtual void delivered(const dtn::data::MetaBundle &b)=0
void setChunkSize(const dtn::data::Length &size)
virtual ~BundleStreamBufCallback()
static const dtn::data::Length BUFF_SIZE
virtual void put(dtn::data::Bundle &b)=0
virtual std::char_traits< char >::int_type overflow(std::char_traits< char >::int_type=std::char_traits< char >::eof())