/* */ #ifndef D_BT_EXTENDED_MESSAGE_H #define D_BT_EXTENDED_MESSAGE_H #include "SimpleBtMessage.h" namespace aria2 { class ExtensionMessage; class ExtensionMessageFactory; class BtExtendedMessage : public SimpleBtMessage { private: std::unique_ptr extensionMessage_; size_t msgLength_; public: BtExtendedMessage(std::unique_ptr extensionMessage = std::unique_ptr{}); static const uint8_t ID = 20; static const char NAME[]; static std::unique_ptr create(ExtensionMessageFactory* factory, const std::shared_ptr& peer, const unsigned char* data, size_t dataLength); virtual void doReceivedAction() CXX11_OVERRIDE; virtual unsigned char* createMessage() CXX11_OVERRIDE; virtual size_t getMessageLength() CXX11_OVERRIDE; virtual bool sendPredicate() const CXX11_OVERRIDE; virtual std::string toString() const CXX11_OVERRIDE; const std::unique_ptr& getExtensionMessage() const; }; } // namespace aria2 #endif // D_BT_EXTENDED_MESSAGE_H