00001 #ifndef ABSTRACTWORKER_H_ 00002 #define ABSTRACTWORKER_H_ 00003 00004 #include "core/BundleCore.h" 00005 #include "core/ConvergenceLayer.h" 00006 #include "data/Bundle.h" 00007 #include "core/EventSwitch.h" 00008 #include "core/RouteEvent.h" 00009 using namespace dtn::data; 00010 00011 namespace dtn 00012 { 00013 namespace core 00014 { 00015 class AbstractWorker 00016 { 00017 public: 00018 AbstractWorker(const string uri) : m_uri(uri) 00019 { 00020 BundleCore &core = BundleCore::getInstance(); 00021 00022 // Registriere mich als Knoten der Bundle empfangen kann 00023 core.registerSubNode( getWorkerURI(), this ); 00024 }; 00025 00026 virtual ~AbstractWorker() { 00027 BundleCore &core = BundleCore::getInstance(); 00028 core.unregisterSubNode( getWorkerURI() ); 00029 }; 00030 00031 virtual const string getWorkerURI() const 00032 { 00033 return m_uri; 00034 } 00035 00036 virtual TransmitReport callbackBundleReceived(const Bundle &b) = 0; 00037 00038 protected: 00039 void transmit(const Bundle &bundle) 00040 { 00041 EventSwitch::raiseEvent(new RouteEvent(bundle, ROUTE_PROCESS_BUNDLE)); 00042 } 00043 00044 private: 00045 string m_uri; 00046 }; 00047 } 00048 } 00049 00050 #endif /*ABSTRACTWORKER_H_*/
1.5.6