/* */ #include "download_handlers.h" #include "DownloadHandlerConstants.h" #include "ContentTypeRequestGroupCriteria.h" #include "MemoryBufferPreDownloadHandler.h" #include "a2functional.h" #ifdef ENABLE_METALINK # include "MetalinkPostDownloadHandler.h" #endif // ENABLE_METALINK #ifdef ENABLE_BITTORRENT # include "BtPostDownloadHandler.h" # include "MemoryBencodePreDownloadHandler.h" # include "UTMetadataPostDownloadHandler.h" #endif // ENABLE_BITTORRENT namespace aria2 { namespace download_handlers { namespace { std::unique_ptr memoryPreDownloadHandler; } // namespace const PreDownloadHandler* getMemoryPreDownloadHandler() { if(!memoryPreDownloadHandler) { memoryPreDownloadHandler = make_unique(); } return memoryPreDownloadHandler.get(); } #ifdef ENABLE_METALINK namespace { std::unique_ptr metalinkPreDownloadHandler; std::unique_ptr metalinkPostDownloadHandler; } // namespace const PreDownloadHandler* getMetalinkPreDownloadHandler() { if(!metalinkPreDownloadHandler) { metalinkPreDownloadHandler = make_unique(); metalinkPreDownloadHandler->setCriteria (make_unique(getMetalinkContentTypes(), getMetalinkExtensions())); } return metalinkPreDownloadHandler.get(); } const PostDownloadHandler* getMetalinkPostDownloadHandler() { if(!metalinkPostDownloadHandler) { metalinkPostDownloadHandler = make_unique(); } return metalinkPostDownloadHandler.get(); } #endif // ENABLE_METALINK #ifdef ENABLE_BITTORRENT namespace { std::unique_ptr btPreDownloadHandler; std::unique_ptr btPostDownloadHandler; std::unique_ptr btMetadataPostDownloadHandler; } // namespace const PreDownloadHandler* getBtPreDownloadHandler() { if(!btPreDownloadHandler) { btPreDownloadHandler = make_unique(); btPreDownloadHandler->setCriteria (make_unique(getBtContentTypes(), getBtExtensions())); } return btPreDownloadHandler.get(); } const PostDownloadHandler* getBtPostDownloadHandler() { if(!btPostDownloadHandler) { btPostDownloadHandler = make_unique(); } return btPostDownloadHandler.get(); } const PostDownloadHandler* getUTMetadataPostDownloadHandler() { if(!btMetadataPostDownloadHandler) { btMetadataPostDownloadHandler = make_unique(); } return btMetadataPostDownloadHandler.get(); } #endif // ENABLE_BITTORRENT } // namespace download_handlers } // namespace aria2