/* */ #ifndef _D_DEFAULT_BT_MESSAGE_FACTORY_H_ #define _D_DEFAULT_BT_MESSAGE_FACTORY_H_ #include "BtMessageFactory.h" namespace aria2 { class BtContext; class Peer; class AbstractBtMessage; class BtMessageDispatcher; class BtRequestFactory; class PeerConnection; class PieceStorage; class DHTNode; class DHTRoutingTable; class DHTTaskQueue; class DHTTaskFactory; class DefaultBtMessageFactory : public BtMessageFactory { private: int32_t cuid; SharedHandle btContext; SharedHandle pieceStorage; SharedHandle peer; bool _dhtEnabled; WeakHandle dispatcher; WeakHandle requestFactory; WeakHandle peerConnection; WeakHandle _localNode; WeakHandle _routingTable; WeakHandle _taskQueue; WeakHandle _taskFactory; void setCommonProperty(const SharedHandle& msg); public: DefaultBtMessageFactory(); virtual ~DefaultBtMessageFactory(); virtual SharedHandle createBtMessage(const unsigned char* msg, int32_t msgLength); virtual SharedHandle createHandshakeMessage(const unsigned char* msg, int32_t msgLength); virtual SharedHandle createHandshakeMessage(const unsigned char* infoHash, const unsigned char* peerId); virtual SharedHandle createRequestMessage(const SharedHandle& piece, int32_t blockIndex); virtual SharedHandle createCancelMessage(int32_t index, int32_t begin, int32_t length); virtual SharedHandle createPieceMessage(int32_t index, int32_t begin, int32_t length); virtual SharedHandle createHaveMessage(int32_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(int32_t index, int32_t begin, int32_t length); virtual SharedHandle createAllowedFastMessage(int32_t index); virtual SharedHandle createPortMessage(uint16_t port); virtual SharedHandle createBtExtendedMessage(const SharedHandle& msg); void setPeer(const SharedHandle& peer); void setBtContext(const SharedHandle& btContext); void setCuid(int32_t cuid) { this->cuid = cuid; } void setDHTEnabled(bool enabled) { _dhtEnabled = enabled; } void setBtMessageDispatcher(const WeakHandle& dispatcher); void setBtRequestFactory(const WeakHandle& factory); void setPeerConnection(const WeakHandle& connection); void setLocalNode(const WeakHandle& localNode); void setRoutingTable(const WeakHandle& routingTable); void setTaskQueue(const WeakHandle& taskQueue); void setTaskFactory(const WeakHandle& taskFactory); }; typedef SharedHandle DefaultBtMessageFactoryHandle; } // namespace aria2 #endif // _D_DEFAULT_BT_MESSAGE_FACTORY_H_