/* */ #ifndef _D_DHT_ANNOUNCE_PEER_MESSAGE_H_ #define _D_DHT_ANNOUNCE_PEER_MESSAGE_H_ #include "DHTQueryMessage.h" #include "DHTConstants.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 = ""); virtual ~DHTAnnouncePeerMessage(); virtual void doReceivedAction(); virtual Dictionary* getArgument(); virtual 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); }; } // namespace aria2 #endif // _D_DHT_ANNOUNCE_PEER_MESSAGE_H_