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