/* */ #ifndef D_DEFAULT_BT_MESSAGE_FACTORY_H #define D_DEFAULT_BT_MESSAGE_FACTORY_H #include "BtMessageFactory.h" #include "Command.h" namespace aria2 { class DownloadContext; class PieceStorage; class PeerStorage; class Peer; class AbstractBtMessage; class BtMessageDispatcher; class BtRequestFactory; class PeerConnection; class ExtensionMessageFactory; class DHTNode; class DHTRoutingTable; class DHTTaskQueue; class DHTTaskFactory; class DefaultBtMessageFactory : public BtMessageFactory { private: cuid_t cuid_; DownloadContext* downloadContext_; PieceStorage* pieceStorage_; PeerStorage* peerStorage_; std::shared_ptr peer_; bool dhtEnabled_; BtMessageDispatcher* dispatcher_; BtRequestFactory* requestFactory_; PeerConnection* peerConnection_; ExtensionMessageFactory* extensionMessageFactory_; DHTNode* localNode_; DHTRoutingTable* routingTable_; DHTTaskQueue* taskQueue_; DHTTaskFactory* taskFactory_; bool metadataGetMode_; void setCommonProperty(AbstractBtMessage* msg); public: DefaultBtMessageFactory(); virtual std::unique_ptr createBtMessage(const unsigned char* msg, size_t msgLength) CXX11_OVERRIDE; virtual std::unique_ptr createHandshakeMessage(const unsigned char* msg, size_t msgLength) CXX11_OVERRIDE; virtual std::unique_ptr createHandshakeMessage(const unsigned char* infoHash, const unsigned char* peerId) CXX11_OVERRIDE; virtual std::unique_ptr createRequestMessage(const std::shared_ptr& piece, size_t blockIndex) CXX11_OVERRIDE; virtual std::unique_ptr createCancelMessage(size_t index, int32_t begin, int32_t length) CXX11_OVERRIDE; virtual std::unique_ptr createPieceMessage(size_t index, int32_t begin, int32_t length) CXX11_OVERRIDE; virtual std::unique_ptr createHaveMessage(size_t index) CXX11_OVERRIDE; virtual std::unique_ptr createChokeMessage() CXX11_OVERRIDE; virtual std::unique_ptr createUnchokeMessage() CXX11_OVERRIDE; virtual std::unique_ptr createInterestedMessage() CXX11_OVERRIDE; virtual std::unique_ptr createNotInterestedMessage() CXX11_OVERRIDE; virtual std::unique_ptr createBitfieldMessage() CXX11_OVERRIDE; virtual std::unique_ptr createKeepAliveMessage() CXX11_OVERRIDE; virtual std::unique_ptr createHaveAllMessage() CXX11_OVERRIDE; virtual std::unique_ptr createHaveNoneMessage() CXX11_OVERRIDE; virtual std::unique_ptr createRejectMessage(size_t index, int32_t begin, int32_t length) CXX11_OVERRIDE; virtual std::unique_ptr createAllowedFastMessage(size_t index) CXX11_OVERRIDE; virtual std::unique_ptr createPortMessage(uint16_t port) CXX11_OVERRIDE; virtual std::unique_ptr createBtExtendedMessage(std::unique_ptr msg) CXX11_OVERRIDE; void setPeer(const std::shared_ptr& peer); void setDownloadContext(DownloadContext* downloadContext); void setPieceStorage(PieceStorage* pieceStorage); void setPeerStorage(PeerStorage* peerStorage); void setCuid(cuid_t cuid) { cuid_ = cuid; } void setDHTEnabled(bool enabled) { dhtEnabled_ = enabled; } void setBtMessageDispatcher(BtMessageDispatcher* dispatcher); void setBtRequestFactory(BtRequestFactory* factory); void setPeerConnection(PeerConnection* connection); void setExtensionMessageFactory(ExtensionMessageFactory* factory); void setLocalNode(DHTNode* localNode); void setRoutingTable(DHTRoutingTable* routingTable); void setTaskQueue(DHTTaskQueue* taskQueue); void setTaskFactory(DHTTaskFactory* taskFactory); void enableMetadataGetMode() { metadataGetMode_ = true; } }; } // namespace aria2 #endif // D_DEFAULT_BT_MESSAGE_FACTORY_H