IBR-DTNSuite  0.8
ibrdtn/ibrdtn/data/AgeBlock.h
Go to the documentation of this file.
00001 /*
00002  * AgeBlock.h
00003  *
00004  *  Created on: 18.11.2010
00005  *      Author: morgenro
00006  */
00007 
00008 #include <ibrdtn/data/Block.h>
00009 #include <ibrdtn/data/SDNV.h>
00010 #include <ibrdtn/data/ExtensionBlock.h>
00011 #include <ibrcommon/TimeMeasurement.h>
00012 
00013 #ifndef AGEBLOCK_H_
00014 #define AGEBLOCK_H_
00015 
00016 namespace dtn
00017 {
00018         namespace data
00019         {
00020                 class AgeBlock : public dtn::data::Block
00021                 {
00022                 public:
00023                         class Factory : public dtn::data::ExtensionBlock::Factory
00024                         {
00025                         public:
00026                                 Factory() : dtn::data::ExtensionBlock::Factory(AgeBlock::BLOCK_TYPE) {};
00027                                 virtual ~Factory() {};
00028                                 virtual dtn::data::Block* create();
00029                         };
00030 
00031                         static const char BLOCK_TYPE = 10;
00032 
00033                         AgeBlock();
00034                         virtual ~AgeBlock();
00035 
00036                         virtual size_t getLength() const;
00037                         virtual std::ostream &serialize(std::ostream &stream, size_t &length) const;
00038                         virtual std::istream &deserialize(std::istream &stream, const size_t length);
00039 
00040                         virtual std::ostream &serialize_strict(std::ostream &stream, size_t &length) const;
00041                         virtual size_t getLength_strict() const;
00042 
00043                         size_t getMicroseconds() const;
00044                         size_t getSeconds() const;
00045 
00049                         void setSeconds(size_t value);
00050 
00054                         void addSeconds(size_t value);
00055 
00056                 private:
00057                         dtn::data::SDNV _age;
00058                         ibrcommon::TimeMeasurement _time;
00059                 };
00060 
00064                 static AgeBlock::Factory __AgeBlockFactory__;
00065         }
00066 }
00067 
00068 #endif /* AGEBLOCK_H_ */