00001 #ifndef BUNDLECORE_H_ 00002 #define BUNDLECORE_H_ 00003 00004 #include "Component.h" 00005 00006 #include "core/EventReceiver.h" 00007 #include "core/StatusReportGenerator.h" 00008 #include "core/BundleStorage.h" 00009 #include "core/WallClock.h" 00010 00011 #include "net/ConnectionManager.h" 00012 #include "net/ConvergenceLayer.h" 00013 00014 #include <ibrdtn/data/Serializer.h> 00015 #include <ibrdtn/data/EID.h> 00016 #include <ibrdtn/data/CustodySignalBlock.h> 00017 00018 #include <vector> 00019 #include <set> 00020 #include <map> 00021 00022 using namespace dtn::data; 00023 00024 namespace dtn 00025 { 00026 namespace core 00027 { 00031 class BundleCore : public dtn::daemon::IntegratedComponent, public dtn::core::EventReceiver, public dtn::data::Validator 00032 { 00033 public: 00034 static dtn::data::EID local; 00035 00036 static BundleCore& getInstance(); 00037 00038 WallClock& getClock(); 00039 00040 void setStorage(dtn::core::BundleStorage *storage); 00041 dtn::core::BundleStorage& getStorage(); 00042 00043 void transferTo(const dtn::data::EID &destination, const dtn::data::BundleID &bundle); 00044 00045 void addConvergenceLayer(dtn::net::ConvergenceLayer *cl); 00046 00047 void addConnection(const dtn::core::Node &n); 00048 00049 const std::set<dtn::core::Node> getNeighbors(); 00050 00051 void raiseEvent(const dtn::core::Event *evt); 00052 00053 virtual void validate(const dtn::data::PrimaryBlock &obj) const throw (RejectedException); 00054 virtual void validate(const dtn::data::Block &obj, const size_t length) const throw (RejectedException); 00055 virtual void validate(const dtn::data::Bundle &obj) const throw (RejectedException); 00056 00060 static size_t blocksizelimit; 00061 00065 static bool forwarding; 00066 00070 virtual const std::string getName() const; 00071 00072 protected: 00073 virtual void componentUp(); 00074 virtual void componentDown(); 00075 00076 private: 00080 BundleCore(); 00081 00085 virtual ~BundleCore(); 00086 00090 BundleCore operator=(const BundleCore &k) { return k; }; 00091 00095 WallClock _clock; 00096 00097 dtn::core::BundleStorage *_storage; 00098 00099 // generator for statusreports 00100 StatusReportGenerator _statusreportgen; 00101 00102 // manager class for connections 00103 dtn::net::ConnectionManager _connectionmanager; 00104 }; 00105 } 00106 } 00107 00108 #endif /*BUNDLECORE_H_*/ 00109
1.7.1