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

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 <ibrdtn/data/MetaBundle.h>
00013 #include "ibrdtn/data/EID.h"
00014 #include "core/Node.h"
00015 #include <ibrcommon/thread/Queue.h>
00016 #include <list>
00017 #include <map>
00018 #include <queue>
00019 
00020 namespace dtn
00021 {
00022         namespace routing
00023         {
00024                 class NeighborRoutingExtension : public BaseRouter::ThreadedExtension
00025                 {
00026                 public:
00027                         NeighborRoutingExtension();
00028                         ~NeighborRoutingExtension();
00029 
00030                         void notify(const dtn::core::Event *evt);
00031 
00032                         virtual void stopExtension();
00033 
00034                 protected:
00035                         void run();
00036                         bool __cancellation();
00037 
00038                 private:
00045                         bool isNeighbor(const dtn::data::EID &eid) const;
00046 
00053                         void remove(const dtn::data::BundleID &id);
00054 
00055                         void route(const dtn::data::MetaBundle &meta);
00056 
00057                         std::list<dtn::core::Node> _neighbors;
00058 
00059                         ibrcommon::Mutex _stored_bundles_lock;
00060                         std::map<dtn::data::EID, std::queue<dtn::data::BundleID> > _stored_bundles;
00061                         ibrcommon::Queue<dtn::data::EID> _available;
00062                 };
00063         }
00064 }
00065 
00066 #endif /* NEIGHBORROUTINGEXTENSION_H_ */

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