/* */ #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_; SharedHandle downloadContext_; SharedHandle pieceStorage_; SharedHandle peerStorage_; SharedHandle peer_; bool dhtEnabled_; BtMessageDispatcher* dispatcher_; BtRequestFactory* requestFactory_; PeerConnection* peerConnection_; SharedHandle extensionMessageFactory_; DHTNode* localNode_; DHTRoutingTable* routingTable_; DHTTaskQueue* taskQueue_; DHTTaskFactory* taskFactory_; bool metadataGetMode_; void setCommonProperty(const SharedHandle& msg); public: DefaultBtMessageFactory(); virtual ~DefaultBtMessageFactory(); virtual SharedHandle createBtMessage(const unsigned char* msg, size_t msgLength); virtual SharedHandle createHandshakeMessage(const unsigned char* msg, size_t msgLength); virtual SharedHandle createHandshakeMessage(const unsigned char* infoHash, const unsigned char* peerId); virtual SharedHandle createRequestMessage(const SharedHandle& piece, size_t blockIndex); virtual SharedHandle createCancelMessage(size_t index, uint32_t begin, size_t length); virtual SharedHandle createPieceMessage(size_t index, uint32_t begin, size_t length); virtual SharedHandle createHaveMessage(size_t index); virtual SharedHandle createChokeMessage(); virtual SharedHandle createUnchokeMessage(); virtual SharedHandle createInterestedMessage(); virtual SharedHandle createNotInterestedMessage(); virtual SharedHandle createBitfieldMessage(); virtual SharedHandle createKeepAliveMessage(); virtual SharedHandle createHaveAllMessage(); virtual SharedHandle createHaveNoneMessage(); virtual SharedHandle createRejectMessage(size_t index, uint32_t begin, size_t length); virtual SharedHandle createAllowedFastMessage(size_t index); virtual SharedHandle createPortMessage(uint16_t port); virtual SharedHandle createBtExtendedMessage(const SharedHandle& msg); void setPeer(const SharedHandle& peer); void setDownloadContext(const SharedHandle& downloadContext); void setPieceStorage(const SharedHandle& pieceStorage); void setPeerStorage(const SharedHandle& 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 (const SharedHandle& factory); void setLocalNode(DHTNode* localNode); void setRoutingTable(DHTRoutingTable* routingTable); void setTaskQueue(DHTTaskQueue* taskQueue); void setTaskFactory(DHTTaskFactory* taskFactory); void enableMetadataGetMode() { metadataGetMode_ = true; } }; typedef SharedHandle DefaultBtMessageFactoryHandle; } // namespace aria2 #endif // D_DEFAULT_BT_MESSAGE_FACTORY_H