00001 /* 00002 * AbstractBundleStorage.h 00003 * 00004 * Created on: 24.03.2009 00005 * Author: morgenro 00006 */ 00007 00008 #include "config.h" 00009 00010 #ifndef ABSTRACTBUNDLESTORAGE_H_ 00011 #define ABSTRACTBUNDLESTORAGE_H_ 00012 00013 #include "core/BundleCore.h" 00014 #include "core/EventReceiver.h" 00015 #include "core/BundleSchedule.h" 00016 #include "data/Bundle.h" 00017 #include "core/Node.h" 00018 00019 #include "utils/Conditional.h" 00020 00021 using namespace dtn::utils; 00022 00023 namespace dtn 00024 { 00025 namespace core 00026 { 00027 class AbstractBundleStorage : public EventReceiver 00028 { 00029 public: 00034 virtual void store(const BundleSchedule &schedule) = 0; 00035 00041 virtual Bundle* storeFragment(const Bundle &bundle) = 0; 00042 00046 virtual void clear() {}; 00047 00051 virtual bool isEmpty() { return true; }; 00052 00056 virtual unsigned int getCount() { return 0; }; 00057 00061 void raiseEvent(const Event *evt); 00062 00063 protected: 00067 AbstractBundleStorage(); 00068 00072 ~AbstractBundleStorage(); 00073 00077 void wait(); 00078 00082 void stopWait(); 00083 00084 virtual void eventNodeAvailable(const Node &node) {}; 00085 virtual void eventNodeUnavailable(const Node &node) {}; 00086 00087 private: 00088 Conditional m_breakwait; 00089 }; 00090 } 00091 } 00092 00093 #endif /* ABSTRACTBUNDLESTORAGE_H_ */
1.5.6