/* */ #ifndef _D_DEFAULT_BT_MESSAGE_FACTORY_H_ #define _D_DEFAULT_BT_MESSAGE_FACTORY_H_ #include "BtMessageFactory.h" #include "Peer.h" #include "AbstractBtMessage.h" #include "BtRegistry.h" #include "DHTTaskQueueDecl.h" #include "DHTTaskFactoryDecl.h" class DefaultBtMessageFactory : public BtMessageFactory { private: int32_t cuid; BtContextHandle btContext; PieceStorageHandle pieceStorage; PeerHandle peer; bool _dhtEnabled; BtMessageDispatcherWeakHandle dispatcher; BtRequestFactoryWeakHandle requestFactory; PeerConnectionWeakHandle peerConnection; WeakHandle _taskQueue; WeakHandle _taskFactory; void setCommonProperty(const AbstractBtMessageHandle& msg); public: DefaultBtMessageFactory(); virtual ~DefaultBtMessageFactory(); virtual BtMessageHandle createBtMessage(const unsigned char* msg, int32_t msgLength); virtual BtMessageHandle createHandshakeMessage(const unsigned char* msg, int32_t msgLength); virtual BtMessageHandle createHandshakeMessage(const unsigned char* infoHash, const unsigned char* peerId); virtual BtMessageHandle createRequestMessage(const PieceHandle& piece, int32_t blockIndex); virtual BtMessageHandle createCancelMessage(int32_t index, int32_t begin, int32_t length); virtual BtMessageHandle createPieceMessage(int32_t index, int32_t begin, int32_t length); virtual BtMessageHandle createHaveMessage(int32_t index); virtual BtMessageHandle createChokeMessage(); virtual BtMessageHandle createUnchokeMessage(); virtual BtMessageHandle createInterestedMessage(); virtual BtMessageHandle createNotInterestedMessage(); virtual BtMessageHandle createBitfieldMessage(); virtual BtMessageHandle createKeepAliveMessage(); virtual BtMessageHandle createHaveAllMessage(); virtual BtMessageHandle createHaveNoneMessage(); virtual BtMessageHandle createRejectMessage(int32_t index, int32_t begin, int32_t length); virtual BtMessageHandle createAllowedFastMessage(int32_t index); virtual BtMessageHandle createPortMessage(uint16_t port); virtual BtMessageHandle createBtExtendedMessage(const ExensionMessageHandle& msg); void setPeer(const PeerHandle& peer) { this->peer = peer; } PeerHandle getPeer() const { return peer; } void setBtContext(const BtContextHandle& btContext) { this->btContext = btContext; this->pieceStorage = PIECE_STORAGE(btContext); } BtContextHandle getBtContext() const { return btContext; } void setCuid(int32_t cuid) { this->cuid = cuid; } void setDHTEnabled(bool enabled) { _dhtEnabled = enabled; } void setBtMessageDispatcher(const BtMessageDispatcherWeakHandle& dispatcher) { this->dispatcher = dispatcher; } void setBtRequestFactory(const BtRequestFactoryWeakHandle& factory) { this->requestFactory = factory; } void setPeerConnection(const PeerConnectionWeakHandle& connection) { this->peerConnection = connection; } void setTaskQueue(const WeakHandle& taskQueue); void setTaskFactory(const WeakHandle& taskFactory); }; typedef SharedHandle DefaultBtMessageFactoryHandle; #endif // _D_DEFAULT_BT_MESSAGE_FACTORY_H_