summaryrefslogtreecommitdiff
path: root/src/MetalinkPostDownloadHandler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/MetalinkPostDownloadHandler.cc')
-rw-r--r--src/MetalinkPostDownloadHandler.cc29
1 files changed, 23 insertions, 6 deletions
diff --git a/src/MetalinkPostDownloadHandler.cc b/src/MetalinkPostDownloadHandler.cc
index 56f24b63..a0f305c4 100644
--- a/src/MetalinkPostDownloadHandler.cc
+++ b/src/MetalinkPostDownloadHandler.cc
@@ -36,15 +36,32 @@
#include "RequestGroup.h"
#include "Metalink2RequestGroup.h"
#include "Logger.h"
+#include "DiskAdaptor.h"
+#include "PieceStorage.h"
+#include "DownloadHandlerConstants.h"
+#include "ContentTypeRequestGroupCriteria.h"
-MetalinkPostDownloadHandler::MetalinkPostDownloadHandler(const Option* option):
- PostDownloadHandler(".metalink", option)
-{}
+MetalinkPostDownloadHandler::MetalinkPostDownloadHandler()
+{
+ setCriteria(new ContentTypeRequestGroupCriteria(DownloadHandlerConstants::getMetalinkContentTypes(),
+ DownloadHandlerConstants::getMetalinkExtensions()));
+}
MetalinkPostDownloadHandler::~MetalinkPostDownloadHandler() {}
-RequestGroups MetalinkPostDownloadHandler::getNextRequestGroups(const string& path)
+RequestGroups MetalinkPostDownloadHandler::getNextRequestGroups(RequestGroup* requestGroup)
{
- _logger->debug("Generating RequestGroups for Metalink file %s", path.c_str());
- return Metalink2RequestGroup(_option).generate(path);
+ const Option* op = requestGroup->getOption();
+ _logger->debug("Generating RequestGroups for Metalink file %s",
+ requestGroup->getFilePath().c_str());
+ DiskAdaptorHandle diskAdaptor = requestGroup->getPieceStorage()->getDiskAdaptor();
+ try {
+ diskAdaptor->openExistingFile();
+ RequestGroups rgs = Metalink2RequestGroup(op).generate(diskAdaptor);
+ diskAdaptor->closeFile();
+ return rgs;
+ } catch(Exception* e) {
+ diskAdaptor->closeFile();
+ throw;
+ }
}