/* */ #ifndef _D_HANDSHAKE_EXTENSION_MESSAGE_H_ #define _D_HANDSHAKE_EXTENSION_MESSAGE_H_ #include "ExtensionMessage.h" #include "BtConstants.h" #include namespace aria2 { class BtContext; class Peer; class Logger; class HandshakeExtensionMessage; typedef SharedHandle HandshakeExtensionMessageHandle; class HandshakeExtensionMessage:public ExtensionMessage { private: std::string _clientVersion; uint16_t _tcpPort; std::map _extensions; SharedHandle _btContext; SharedHandle _peer; Logger* _logger; public: HandshakeExtensionMessage(); virtual ~HandshakeExtensionMessage(); virtual std::string getBencodedData(); 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; } 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); void setBtContext(const SharedHandle& btContext); static HandshakeExtensionMessageHandle create(const unsigned char* data, size_t dataLength); }; typedef SharedHandle HandshakeExtensionMessageHandle; } // namespace aria2 #endif // _D_HANDSHAKE_EXTENSION_MESSAGE_H_