/* */ #ifndef _D_DHT_MESSAGE_TRACKER_H_ #define _D_DHT_MESSAGE_TRACKER_H_ #include "common.h" #include #include #include "SharedHandle.h" #include "a2time.h" namespace aria2 { class DHTMessage; class DHTMessageCallback; class DHTRoutingTable; class DHTMessageFactory; class DHTMessageTrackerEntry; class Logger; class BDE; class DHTMessageTracker { private: std::deque > _entries; SharedHandle _routingTable; SharedHandle _factory; Logger* _logger; public: DHTMessageTracker(); ~DHTMessageTracker(); void addMessage(const SharedHandle& message, time_t timeout, const SharedHandle& callback = SharedHandle()); void addMessage(const SharedHandle& message, const SharedHandle& callback = SharedHandle()); std::pair, SharedHandle > messageArrived(const BDE& 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_