/* */ #ifndef D_HANDSHAKE_EXTENSION_MESSAGE_H #define D_HANDSHAKE_EXTENSION_MESSAGE_H #include "ExtensionMessage.h" #include "BtConstants.h" #include "ExtensionMessageRegistry.h" #include "SharedHandle.h" namespace aria2 { class Peer; class DownloadContext; class HandshakeExtensionMessage:public ExtensionMessage { private: std::string clientVersion_; uint16_t tcpPort_; size_t metadataSize_; ExtensionMessageRegistry extreg_; SharedHandle dctx_; SharedHandle peer_; public: HandshakeExtensionMessage(); virtual ~HandshakeExtensionMessage(); virtual std::string getPayload(); virtual uint8_t getExtensionMessageID() { return 0; } virtual const char* getExtensionName() const { return EXTENSION_NAME; } static const char 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(int key, uint8_t id); void setExtensions(const Extensions& extensions); uint8_t getExtensionMessageID(int key) const; void setPeer(const SharedHandle& peer); static HandshakeExtensionMessage* create(const unsigned char* data, size_t dataLength); }; } // namespace aria2 #endif // D_HANDSHAKE_EXTENSION_MESSAGE_H