/* */ #ifndef D_DHT_MESSAGE_TRACKER_H #define D_DHT_MESSAGE_TRACKER_H #include "common.h" #include #include #include "SharedHandle.h" #include "a2time.h" #include "ValueBase.h" namespace aria2 { class DHTMessage; class DHTResponseMessage; class DHTMessageCallback; class DHTRoutingTable; class DHTMessageFactory; class DHTMessageTrackerEntry; class DHTMessageTracker { private: std::deque > entries_; SharedHandle routingTable_; SharedHandle factory_; void handleTimeoutEntry(const SharedHandle& entry); public: DHTMessageTracker(); ~DHTMessageTracker(); void addMessage(const SharedHandle& message, time_t timeout, const SharedHandle& callback = SharedHandle()); std::pair, SharedHandle > messageArrived(const Dict* dict, const std::string& ipaddr, uint16_t port); void handleTimeout(); SharedHandle getEntryFor (const SharedHandle& message) const; size_t countEntry() const; void setRoutingTable(const SharedHandle& routingTable); void setMessageFactory(const SharedHandle& factory); }; } // namespace aria2 #endif // D_DHT_MESSAGE_TRACKER_H