/* */ #ifndef D_DHT_MESSAGE_H #define D_DHT_MESSAGE_H #include "common.h" #include #include #include "A2STR.h" namespace aria2 { class DHTNode; class DHTMessage { private: std::shared_ptr localNode_; std::shared_ptr remoteNode_; std::string transactionID_; std::string version_; void generateTransactionID(); public: DHTMessage(const std::shared_ptr& localNode, const std::shared_ptr& remoteNode, const std::string& transactionID = A2STR::NIL); virtual ~DHTMessage(); const std::string& getTransactionID() const { return transactionID_; } const std::shared_ptr& getLocalNode() const { return localNode_; } const std::shared_ptr& getRemoteNode() const { return remoteNode_; } virtual void doReceivedAction() = 0; virtual bool send() = 0; virtual bool isReply() const = 0; virtual void validate() const {} virtual const std::string& getMessageType() const = 0; virtual std::string toString() const = 0; const std::string& getVersion() const { return version_; } 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