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, dtn::data::Bundle &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 00067 protected: 00068 virtual void componentUp(); 00069 virtual void componentDown(); 00070 00071 private: 00075 BundleCore(); 00076 00080 virtual ~BundleCore(); 00081 00085 BundleCore operator=(const BundleCore &k) { return k; }; 00086 00090 WallClock _clock; 00091 00092 dtn::core::BundleStorage *_storage; 00093 00094 // generator for statusreports 00095 StatusReportGenerator _statusreportgen; 00096 00097 // manager class for connections 00098 dtn::net::ConnectionManager _connectionmanager; 00099 }; 00100 } 00101 } 00102 00103 #endif /*BUNDLECORE_H_*/ 00104
1.6.3