/* */ #ifndef D_DHT_REGISTRY_H #define D_DHT_REGISTRY_H #include "common.h" #include namespace aria2 { class DHTNode; class DHTRoutingTable; class DHTTaskQueue; class DHTTaskFactory; class DHTPeerAnnounceStorage; class DHTTokenTracker; class DHTMessageDispatcher; class DHTMessageReceiver; class DHTMessageFactory; class DHTRegistry { private: struct Data { bool initialized; std::shared_ptr localNode; std::shared_ptr routingTable; std::shared_ptr taskQueue; std::shared_ptr taskFactory; std::shared_ptr peerAnnounceStorage; std::shared_ptr tokenTracker; std::shared_ptr messageDispatcher; std::shared_ptr messageReceiver; std::shared_ptr messageFactory; Data():initialized(false) {} }; static Data data_; static Data data6_; static void clear(Data& data); DHTRegistry(); public: static const Data& getData() { return data_; } static Data& getMutableData() { return data_; } static void clearData(); static bool isInitialized() { return data_.initialized; } static void setInitialized(bool f) { data_.initialized = f; } static const Data& getData6() { return data6_; } static Data& getMutableData6() { return data6_; } static void clearData6(); static bool isInitialized6() { return data6_.initialized; } static void setInitialized6(bool f) { data6_.initialized = f; } }; } // namespace aria2 #endif // D_DHT_REGISTRY_H