IBR-DTNSuite
0.8
|
00001 /* 00002 * StreamBlock.cpp 00003 * 00004 * Created on: 17.11.2011 00005 * Author: morgenro 00006 */ 00007 00008 #include "ibrdtn/data/StreamBlock.h" 00009 00010 namespace dtn 00011 { 00012 namespace data 00013 { 00014 dtn::data::Block* StreamBlock::Factory::create() 00015 { 00016 return new StreamBlock(); 00017 } 00018 00019 StreamBlock::StreamBlock() 00020 : dtn::data::Block(StreamBlock::BLOCK_TYPE), _seq(0), _streamflags(0) 00021 { 00022 } 00023 00024 StreamBlock::~StreamBlock() 00025 { 00026 00027 } 00028 00029 size_t StreamBlock::getLength() const 00030 { 00031 return dtn::data::SDNV(_streamflags).getLength() + _seq.getLength(); 00032 } 00033 00034 std::ostream& StreamBlock::serialize(std::ostream &stream, size_t&) const 00035 { 00036 stream << dtn::data::SDNV(_streamflags); 00037 stream << _seq; 00038 return stream; 00039 } 00040 00041 std::istream& StreamBlock::deserialize(std::istream &stream, const size_t) 00042 { 00043 dtn::data::SDNV flags; 00044 stream >> flags; _streamflags = flags.getValue(); 00045 stream >> _seq; 00046 return stream; 00047 } 00048 00049 void StreamBlock::set(STREAM_FLAGS flag, const bool &value) 00050 { 00051 if (value) 00052 { 00053 _streamflags |= flag; 00054 } 00055 else 00056 { 00057 _streamflags &= ~(flag); 00058 } 00059 } 00060 00061 bool StreamBlock::get(STREAM_FLAGS flag) const 00062 { 00063 return (_streamflags & flag); 00064 } 00065 00066 void StreamBlock::setSequenceNumber(size_t seq) 00067 { 00068 _seq = seq; 00069 } 00070 00071 size_t StreamBlock::getSequenceNumber() const 00072 { 00073 return _seq.getValue(); 00074 } 00075 } /* namespace data */ 00076 } /* namespace dtn */