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

daemon/src/routing/FloodRoutingExtension.h

Go to the documentation of this file.
00001 /*
00002  * EpidemicRoutingExtension.h
00003  *
00004  *  Created on: 18.02.2010
00005  *      Author: morgenro
00006  */
00007 
00008 #ifndef FLOODROUTINGEXTENSION_H_
00009 #define FLOODROUTINGEXTENSION_H_
00010 
00011 #include "core/Node.h"
00012 
00013 #include "routing/SummaryVector.h"
00014 #include "routing/BaseRouter.h"
00015 #include "routing/NeighborDatabase.h"
00016 
00017 #include <ibrdtn/data/Block.h>
00018 #include <ibrdtn/data/SDNV.h>
00019 #include <ibrdtn/data/BundleString.h>
00020 #include <ibrdtn/data/BundleList.h>
00021 
00022 #include <ibrcommon/thread/Queue.h>
00023 
00024 #include <list>
00025 #include <queue>
00026 
00027 namespace dtn
00028 {
00029         namespace routing
00030         {
00031                 class FloodRoutingExtension : public BaseRouter::ThreadedExtension
00032                 {
00033                 public:
00034                         FloodRoutingExtension();
00035                         ~FloodRoutingExtension();
00036 
00037                         void notify(const dtn::core::Event *evt);
00038 
00039                         virtual void stopExtension();
00040 
00041                 protected:
00042                         void run();
00043                         bool __cancellation();
00044 
00045                 private:
00046                         class Task
00047                         {
00048                         public:
00049                                 virtual ~Task() {};
00050                                 virtual std::string toString() = 0;
00051                         };
00052 
00053                         class ExpireTask : public Task
00054                         {
00055                         public:
00056                                 ExpireTask(const size_t timestamp);
00057                                 virtual ~ExpireTask();
00058 
00059                                 virtual std::string toString();
00060 
00061                                 const size_t timestamp;
00062                         };
00063 
00064                         class SearchNextBundleTask : public Task
00065                         {
00066                         public:
00067                                 SearchNextBundleTask(const dtn::data::EID &eid);
00068                                 virtual ~SearchNextBundleTask();
00069 
00070                                 virtual std::string toString();
00071 
00072                                 const dtn::data::EID eid;
00073                         };
00074 
00075                         class ProcessBundleTask : public Task
00076                         {
00077                         public:
00078                                 ProcessBundleTask(const dtn::data::MetaBundle &meta);
00079                                 virtual ~ProcessBundleTask();
00080 
00081                                 virtual std::string toString();
00082 
00083                                 const dtn::data::MetaBundle bundle;
00084                         };
00085 
00089                         ibrcommon::Mutex _list_mutex;
00090 
00094                         dtn::routing::BundleSummary _purge_vector;
00095 
00099                         dtn::routing::NeighborDatabase _neighbors;
00100 
00104                         ibrcommon::Queue<FloodRoutingExtension::Task* > _taskqueue;
00105                 };
00106         }
00107 }
00108 
00109 #endif /* EPIDEMICROUTINGEXTENSION_H_ */

Generated on Thu Nov 11 2010 09:49:47 for IBR-DTNSuite by  doxygen 1.7.1