/* */ #ifndef _D_HANDSHAKE_EXTENSION_MESSAGE_H_ #define _D_HANDSHAKE_EXTENSION_MESSAGE_H_ #include "ExtensionMessage.h" #include #include "BtConstants.h" namespace aria2 { class Peer; class Logger; class DownloadContext; class HandshakeExtensionMessage:public ExtensionMessage { private: std::string clientVersion_; uint16_t tcpPort_; size_t metadataSize_; std::map extensions_; SharedHandle dctx_; SharedHandle peer_; Logger* logger_; public: HandshakeExtensionMessage(); virtual ~HandshakeExtensionMessage(); virtual std::string getPayload(); virtual uint8_t getExtensionMessageID() { return 0; } virtual const std::string& getExtensionName() const { return EXTENSION_NAME; } static const std::string EXTENSION_NAME; virtual std::string toString() const; virtual void doReceivedAction(); void setClientVersion(const std::string& version) { clientVersion_ = version; } const std::string& getClientVersion() const { return clientVersion_; } void setTCPPort(uint16_t port) { tcpPort_ = port; } uint16_t getTCPPort() const { return tcpPort_; } size_t getMetadataSize() { return metadataSize_; } void setMetadataSize(size_t size) { metadataSize_ = size; } void setDownloadContext(const SharedHandle& dctx) { dctx_ = dctx; } void setExtension(const std::string& name, uint8_t id) { extensions_[name] = id; } void setExtensions(const Extensions& extensions) { extensions_ = extensions; } uint8_t getExtensionMessageID(const std::string& name) const; void setPeer(const SharedHandle& peer); static SharedHandle create(const unsigned char* data, size_t dataLength); }; typedef SharedHandle HandshakeExtensionMessageHandle; } // namespace aria2 #endif // _D_HANDSHAKE_EXTENSION_MESSAGE_H_