/* */ #include "DownloadHandlerFactory.h" #include "MemoryBufferPreDownloadHandler.h" #include "MetalinkPostDownloadHandler.h" #include "BtPostDownloadHandler.h" #include "DownloadHandlerConstants.h" #include "ContentTypeRequestGroupCriteria.h" namespace aria2 { #ifdef ENABLE_METALINK MemoryBufferPreDownloadHandlerHandle DownloadHandlerFactory::_metalinkPreDownloadHandler = 0; MetalinkPostDownloadHandlerHandle DownloadHandlerFactory::_metalinkPostDownloadHandler = 0; #endif // ENABLE_METALINK #ifdef ENABLE_BITTORRENT MemoryBufferPreDownloadHandlerHandle DownloadHandlerFactory::_btPreDownloadHandler = 0; BtPostDownloadHandlerHandle DownloadHandlerFactory::_btPostDownloadHandler = 0; #endif // ENABLE_BITTORRENT #ifdef ENABLE_METALINK MemoryBufferPreDownloadHandlerHandle DownloadHandlerFactory::getMetalinkPreDownloadHandler() { if(_metalinkPreDownloadHandler.isNull()) { _metalinkPreDownloadHandler = new MemoryBufferPreDownloadHandler(); RequestGroupCriteriaHandle criteria = new ContentTypeRequestGroupCriteria(DownloadHandlerConstants::getMetalinkContentTypes(), DownloadHandlerConstants::getMetalinkExtensions()); _metalinkPreDownloadHandler->setCriteria(criteria); } return _metalinkPreDownloadHandler; } MetalinkPostDownloadHandlerHandle DownloadHandlerFactory::getMetalinkPostDownloadHandler() { if(_metalinkPostDownloadHandler.isNull()) { _metalinkPostDownloadHandler = new MetalinkPostDownloadHandler(); } return _metalinkPostDownloadHandler; } #endif // ENABLE_METALINK #ifdef ENABLE_BITTORRENT MemoryBufferPreDownloadHandlerHandle DownloadHandlerFactory::getBtPreDownloadHandler() { if(_btPreDownloadHandler.isNull()) { _btPreDownloadHandler = new MemoryBufferPreDownloadHandler(); RequestGroupCriteriaHandle criteria = new ContentTypeRequestGroupCriteria(DownloadHandlerConstants::getBtContentTypes(), DownloadHandlerConstants::getBtExtensions()); _btPreDownloadHandler->setCriteria(criteria); } return _btPreDownloadHandler; } BtPostDownloadHandlerHandle DownloadHandlerFactory::getBtPostDownloadHandler() { if(_btPostDownloadHandler.isNull()) { _btPostDownloadHandler = new BtPostDownloadHandler(); } return _btPostDownloadHandler; } #endif // ENABLE_BITTORRENT } // namespace aria2