/* */ #ifndef D_DHT_MESSAGE_TRACKER_ENTRY_H #define D_DHT_MESSAGE_TRACKER_ENTRY_H #include "common.h" #include #include "SharedHandle.h" #include "DHTConstants.h" #include "TimerA2.h" #include "wallclock.h" namespace aria2 { class DHTNode; class DHTMessage; class DHTMessageCallback; class DHTMessageTrackerEntry { private: SharedHandle targetNode_; std::string transactionID_; std::string messageType_; SharedHandle callback_; Timer dispatchedTime_; time_t timeout_; public: DHTMessageTrackerEntry(const SharedHandle& sentMessage, time_t timeout, const SharedHandle& callback = SharedHandle()); ~DHTMessageTrackerEntry(); bool isTimeout() const; void extendTimeout(); bool match(const std::string& transactionID, const std::string& ipaddr, uint16_t port) const; const SharedHandle& getTargetNode() const { return targetNode_; } const std::string& getMessageType() const { return messageType_; } const SharedHandle& getCallback() const { return callback_; } int64_t getElapsedMillis() const; }; } // namespace aria2 #endif // D_DHT_MESSAGE_TRACKER_ENTRY_H