00001 /* 00002 * AgeBlock.cpp 00003 * 00004 * Created on: 18.11.2010 00005 * Author: morgenro 00006 */ 00007 00008 #include "ibrdtn/data/AgeBlock.h" 00009 00010 namespace dtn 00011 { 00012 namespace data 00013 { 00014 dtn::data::Block* AgeBlock::Factory::create() 00015 { 00016 return new AgeBlock(); 00017 } 00018 00019 AgeBlock::AgeBlock() 00020 : dtn::data::Block(AgeBlock::BLOCK_TYPE) 00021 { 00022 _time.start(); 00023 00024 // set the replicate in every fragment bit 00025 set(REPLICATE_IN_EVERY_FRAGMENT, true); 00026 } 00027 00028 AgeBlock::~AgeBlock() 00029 { 00030 } 00031 00032 size_t AgeBlock::getAge() const 00033 { 00034 ibrcommon::TimeMeasurement time = this->_time; 00035 time.stop(); 00036 return _age.getValue() + time.getSeconds(); 00037 } 00038 00039 void AgeBlock::addAge(size_t value) 00040 { 00041 _age += value; 00042 } 00043 00044 void AgeBlock::setAge(size_t value) 00045 { 00046 _age = value; 00047 } 00048 00049 size_t AgeBlock::getLength() const 00050 { 00051 return _age.getLength(); 00052 } 00053 00054 std::ostream& AgeBlock::serialize(std::ostream &stream) const 00055 { 00056 stream << SDNV(getAge()); 00057 return stream; 00058 } 00059 00060 std::istream& AgeBlock::deserialize(std::istream &stream) 00061 { 00062 stream >> _age; 00063 _time.start(); 00064 return stream; 00065 } 00066 00067 size_t AgeBlock::getLength_strict() const 00068 { 00069 return 1; 00070 } 00071 00072 std::ostream& AgeBlock::serialize_strict(std::ostream &stream) const 00073 { 00074 // we have to ignore the age field, because this is very dynamic data 00075 stream << (char)0; 00076 return stream; 00077 } 00078 } 00079 }
1.7.1