IBR-DTNSuite 0.6

daemon/src/routing/RetransmissionExtension.h

Go to the documentation of this file.
00001 /*
00002  * RetransmissionExtension.h
00003  *
00004  *  Created on: 09.03.2010
00005  *      Author: morgenro
00006  */
00007 
00008 #ifndef RETRANSMISSIONEXTENSION_H_
00009 #define RETRANSMISSIONEXTENSION_H_
00010 
00011 #include "routing/BaseRouter.h"
00012 #include "ibrdtn/data/BundleID.h"
00013 #include "ibrdtn/data/EID.h"
00014 #include <queue>
00015 #include <set>
00016 
00017 namespace dtn
00018 {
00019         namespace routing
00020         {
00021                 class RetransmissionExtension : public BaseRouter::Extension
00022                 {
00023                 public:
00024                         RetransmissionExtension();
00025                         virtual ~RetransmissionExtension();
00026 
00027                         void notify(const dtn::core::Event *evt);
00028 
00029                 private:
00030                         class RetransmissionData : public dtn::data::BundleID
00031                         {
00032                         public:
00033                                 RetransmissionData(const dtn::data::BundleID &id, dtn::data::EID destination, size_t retry = 2);
00034                                 virtual ~RetransmissionData();
00035 
00036 
00037                                 const dtn::data::EID destination;
00038 
00039                                 size_t getTimestamp() const;
00040                                 size_t getCount() const;
00041 
00042                                 RetransmissionData& operator++();
00043                                 RetransmissionData& operator++(int);
00044 
00045                                 bool operator!=(const RetransmissionData &obj);
00046                                 bool operator==(const RetransmissionData &obj);
00047 
00048                         private:
00049                                 size_t _timestamp;
00050                                 size_t _count;
00051                                 const size_t retry;
00052                         };
00053 
00054                         std::queue<RetransmissionData> _queue;
00055                         std::set<RetransmissionData> _set;
00056                 };
00057         }
00058 }
00059 
00060 #endif /* RETRANSMISSIONEXTENSION_H_ */