/* */ #ifndef D_BT_MESSAGE_FACTORY_H #define D_BT_MESSAGE_FACTORY_H #include "common.h" #include namespace aria2 { class BtMessage; class BtHandshakeMessage; class BtAllowedFastMessage; class BtBitfieldMessage; class BtCancelMessage; class BtChokeMessage; class BtHaveAllMessage; class BtHaveMessage; class BtHaveNoneMessage; class BtInterestedMessage; class BtKeepAliveMessage; class BtNotInterestedMessage; class BtPieceMessage; class BtPortMessage; class BtRejectMessage; class BtRequestMessage; class BtUnchokeMessage; class BtExtendedMessage; class ExtensionMessage; class Piece; class BtMessageFactory { public: virtual ~BtMessageFactory() {} virtual std::unique_ptr createBtMessage(const unsigned char* msg, size_t msgLength) = 0; virtual std::unique_ptr createHandshakeMessage(const unsigned char* msg, size_t msgLength) = 0; virtual std::unique_ptr createHandshakeMessage(const unsigned char* infoHash, const unsigned char* peerId) = 0; virtual std::unique_ptr createRequestMessage(const std::shared_ptr& piece, size_t blockIndex) = 0; virtual std::unique_ptr createCancelMessage(size_t index, int32_t begin, int32_t length) = 0; virtual std::unique_ptr createPieceMessage(size_t index, int32_t begin, int32_t length) = 0; virtual std::unique_ptr createHaveMessage(size_t index) = 0; virtual std::unique_ptr createChokeMessage() = 0; virtual std::unique_ptr createUnchokeMessage() = 0; virtual std::unique_ptr createInterestedMessage() = 0; virtual std::unique_ptr createNotInterestedMessage() = 0; virtual std::unique_ptr createBitfieldMessage() = 0; virtual std::unique_ptr createKeepAliveMessage() = 0; virtual std::unique_ptr createHaveAllMessage() = 0; virtual std::unique_ptr createHaveNoneMessage() = 0; virtual std::unique_ptr createRejectMessage(size_t index, int32_t begin, int32_t length) = 0; virtual std::unique_ptr createAllowedFastMessage(size_t index) = 0; virtual std::unique_ptr createPortMessage(uint16_t port) = 0; virtual std::unique_ptr createBtExtendedMessage(std::unique_ptr msg) = 0; }; } // namespace aria2 #endif // D_BT_MESSAGE_FACTORY_H