/* */ #ifndef D_DHT_ANNOUNCE_PEER_MESSAGE_H #define D_DHT_ANNOUNCE_PEER_MESSAGE_H #include "DHTQueryMessage.h" #include "DHTConstants.h" #include "A2STR.h" namespace aria2 { class DHTPeerAnnounceStorage; class DHTTokenTracker; class DHTAnnouncePeerMessage : public DHTQueryMessage { private: std::string token_; unsigned char infoHash_[DHT_ID_LENGTH]; uint16_t tcpPort_; DHTPeerAnnounceStorage* peerAnnounceStorage_; DHTTokenTracker* tokenTracker_; protected: virtual std::string toStringOptional() const CXX11_OVERRIDE; public: DHTAnnouncePeerMessage(const std::shared_ptr& localNode, const std::shared_ptr& remoteNode, const unsigned char* infoHash, uint16_t tcpPort, const std::string& token, const std::string& transactionID = A2STR::NIL); virtual void doReceivedAction() CXX11_OVERRIDE; virtual std::unique_ptr getArgument() CXX11_OVERRIDE; virtual const std::string& getMessageType() const CXX11_OVERRIDE; virtual void validate() const CXX11_OVERRIDE; const unsigned char* getInfoHash() const { return infoHash_; } const std::string& getToken() const { return token_; } uint16_t getTCPPort() const { return tcpPort_; } void setPeerAnnounceStorage(DHTPeerAnnounceStorage* storage); void setTokenTracker(DHTTokenTracker* tokenTracker); static const std::string ANNOUNCE_PEER; static const std::string INFO_HASH; static const std::string PORT; static const std::string TOKEN; }; } // namespace aria2 #endif // D_DHT_ANNOUNCE_PEER_MESSAGE_H