• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

ibrdtn/ibrdtn/data/AgeBlock.cpp

Go to the documentation of this file.
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 }

Generated on Wed Mar 30 2011 11:11:49 for IBR-DTNSuite by  doxygen 1.7.1