IBR-DTNSuite 0.6

daemon/src/routing/NeighborRoutingExtension.h

Go to the documentation of this file.
00001 /*
00002  * NeighborRoutingExtension.h
00003  *
00004  *  Created on: 16.02.2010
00005  *      Author: morgenro
00006  */
00007 
00008 #ifndef NEIGHBORROUTINGEXTENSION_H_
00009 #define NEIGHBORROUTINGEXTENSION_H_
00010 
00011 #include "routing/BaseRouter.h"
00012 #include "routing/NeighborDatabase.h"
00013 #include "core/Node.h"
00014 
00015 #include <ibrdtn/data/BundleList.h>
00016 #include <ibrdtn/data/MetaBundle.h>
00017 #include "ibrdtn/data/EID.h"
00018 #include <ibrcommon/thread/Queue.h>
00019 #include <list>
00020 #include <map>
00021 #include <queue>
00022 
00023 namespace dtn
00024 {
00025         namespace routing
00026         {
00027                 class NeighborRoutingExtension : public BaseRouter::ThreadedExtension
00028                 {
00029                 public:
00030                         NeighborRoutingExtension();
00031                         virtual ~NeighborRoutingExtension();
00032 
00033                         void notify(const dtn::core::Event *evt);
00034 
00035                         virtual void stopExtension();
00036 
00037                 protected:
00038                         void run();
00039                         bool __cancellation();
00040 
00041                 private:
00042                         class Task
00043                         {
00044                         public:
00045                                 virtual ~Task() {};
00046                                 virtual std::string toString() = 0;
00047                         };
00048 
00049                         class SearchNextBundleTask : public Task
00050                         {
00051                         public:
00052                                 SearchNextBundleTask(const dtn::data::EID &eid);
00053                                 virtual ~SearchNextBundleTask();
00054 
00055                                 virtual std::string toString();
00056 
00057                                 const dtn::data::EID eid;
00058                         };
00059 
00060                         class ProcessBundleTask : public Task
00061                         {
00062                         public:
00063                                 ProcessBundleTask(const dtn::data::MetaBundle &meta, const dtn::data::EID &origin);
00064                                 virtual ~ProcessBundleTask();
00065 
00066                                 virtual std::string toString();
00067 
00068                                 const dtn::data::MetaBundle bundle;
00069                                 const dtn::data::EID origin;
00070                         };
00071 
00075                         ibrcommon::Queue<NeighborRoutingExtension::Task* > _taskqueue;
00076                 };
00077         }
00078 }
00079 
00080 #endif /* NEIGHBORROUTINGEXTENSION_H_ */