/* */ #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_; WeakHandle peerAnnounceStorage_; WeakHandle tokenTracker_; protected: virtual std::string toStringOptional() const; public: DHTAnnouncePeerMessage(const SharedHandle& localNode, const SharedHandle& remoteNode, const unsigned char* infoHash, uint16_t tcpPort, const std::string& token, const std::string& transactionID = A2STR::NIL); virtual ~DHTAnnouncePeerMessage(); virtual void doReceivedAction(); virtual SharedHandle getArgument(); virtual const std::string& getMessageType() const; virtual void validate() const; const unsigned char* getInfoHash() const { return infoHash_; } const std::string& getToken() const { return token_; } uint16_t getTCPPort() const { return tcpPort_; } void setPeerAnnounceStorage(const WeakHandle& storage); void setTokenTracker(const WeakHandle& 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_