/* */ #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: PeerStorage* peerStorage_; std::shared_ptr peer_; ExtensionMessageRegistry* registry_; DownloadContext* dctx_; BtMessageFactory* messageFactory_; BtMessageDispatcher* dispatcher_; UTMetadataRequestTracker* tracker_; public: DefaultExtensionMessageFactory(); DefaultExtensionMessageFactory (const std::shared_ptr& peer, ExtensionMessageRegistry* registry); virtual std::unique_ptr createMessage(const unsigned char* data, size_t length) CXX11_OVERRIDE; void setPeerStorage(PeerStorage* peerStorage); void setPeer(const std::shared_ptr& peer); void setExtensionMessageRegistry(ExtensionMessageRegistry* registry); void setDownloadContext(DownloadContext* dctx); void setBtMessageFactory(BtMessageFactory* factory); void setBtMessageDispatcher(BtMessageDispatcher* disp); void setUTMetadataRequestTracker(UTMetadataRequestTracker* tracker); }; } // namespace aria2 #endif // D_DEFAULT_EXTENSION_MESSAGE_FACTORY_H