/* */ #ifndef _D_DHT_MESSAGE_H_ #define _D_DHT_MESSAGE_H_ #include "common.h" #include #include "SharedHandle.h" #include "A2STR.h" namespace aria2 { class DHTNode; class DHTMessage { protected: SharedHandle _localNode; SharedHandle _remoteNode; std::string _transactionID; std::string _version; void generateTransactionID(); public: DHTMessage(const SharedHandle& localNode, const SharedHandle& remoteNode, const std::string& transactionID = A2STR::NIL); virtual ~DHTMessage(); const std::string& getTransactionID() const { return _transactionID; } const SharedHandle& getLocalNode() const { return _localNode; } const SharedHandle& getRemoteNode() const { return _remoteNode; } virtual void doReceivedAction() = 0; virtual bool send() = 0; virtual bool isReply() const = 0; virtual void validate() const = 0; virtual std::string getMessageType() const = 0; virtual std::string toString() const = 0; void setVersion(const std::string& version) { _version = version; } static const std::string Y; static const std::string T; static const std::string V; static const std::string ID; }; } // namespace aria2 #endif // _D_DHT_MESSAGE_H_