/* */ #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()); 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 { return _dispatchedTime.differenceInMillis(global::wallclock); } }; } // namespace aria2 #endif // _D_DHT_MESSAGE_TRACKER_ENTRY_H_