/* */ #ifndef D_DEFAULT_EXTENSION_MESSAGE_FACTORY_H #define D_DEFAULT_EXTENSION_MESSAGE_FACTORY_H #include "ExtensionMessageFactory.h" namespace aria2 { class PeerStorage; class Peer; class ExtensionMessageRegistry; class DownloadContext; class BtMessageFactory; class BtMessageDispatcher; class UTMetadataRequestTracker; class DefaultExtensionMessageFactory:public ExtensionMessageFactory { private: SharedHandle peerStorage_; SharedHandle peer_; SharedHandle registry_; SharedHandle dctx_; BtMessageFactory* messageFactory_; BtMessageDispatcher* dispatcher_; UTMetadataRequestTracker* tracker_; public: DefaultExtensionMessageFactory(); DefaultExtensionMessageFactory (const SharedHandle& peer, const SharedHandle& registry); virtual ~DefaultExtensionMessageFactory(); virtual SharedHandle createMessage(const unsigned char* data, size_t length); void setPeerStorage(const SharedHandle& peerStorage); void setPeer(const SharedHandle& peer); void setExtensionMessageRegistry (const SharedHandle& registry) { registry_ = registry; } void setDownloadContext(const SharedHandle& dctx) { dctx_ = dctx; } void setBtMessageFactory(BtMessageFactory* factory) { messageFactory_ = factory; } void setBtMessageDispatcher(BtMessageDispatcher* disp) { dispatcher_ = disp; } void setUTMetadataRequestTracker(UTMetadataRequestTracker* tracker) { tracker_ = tracker; } }; } // namespace aria2 #endif // D_DEFAULT_EXTENSION_MESSAGE_FACTORY_H