From fc2fd4a903b4b2cc8869bfc113480d1bb5d744b2 Mon Sep 17 00:00:00 2001 From: Björn Hagemeister Date: Mon, 22 Sep 2014 18:09:39 +0200 Subject: Adapted files to new filetransfer. --- .../filetransfer/FileDownloadWorker.java | 42 ++++++++++++++++------ 1 file changed, 32 insertions(+), 10 deletions(-) (limited to 'src/main/java/org/openslx/satellitedaemon/filetransfer/FileDownloadWorker.java') diff --git a/src/main/java/org/openslx/satellitedaemon/filetransfer/FileDownloadWorker.java b/src/main/java/org/openslx/satellitedaemon/filetransfer/FileDownloadWorker.java index f912698..9f7bc8c 100644 --- a/src/main/java/org/openslx/satellitedaemon/filetransfer/FileDownloadWorker.java +++ b/src/main/java/org/openslx/satellitedaemon/filetransfer/FileDownloadWorker.java @@ -1,10 +1,13 @@ package org.openslx.satellitedaemon.filetransfer; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.openslx.filetransfer.Downloader; +import org.openslx.filetransfer.FileRange; +import org.openslx.filetransfer.WantRangeCallback; import org.openslx.imagemaster.thrift.iface.DownloadInfos; import org.openslx.satellitedaemon.Globals; import org.openslx.satellitedaemon.db.DbImage; @@ -17,27 +20,46 @@ public class FileDownloadWorker implements Runnable { while (true) { List imageList = DbImage.getAllMarkedForDownload(); log.info("imageList Contains " + imageList.size() + " items."); - for (DbImage image : imageList) { + for (final DbImage image : imageList) { List range = new ArrayList(); for (long i = 0; i < (image.fileSize / Globals.BLOCKSIZE); i++) { range.add((int) i); } - DownloadInfos downInfos = ThriftConnection.getDownloadInfos( - image, range); + DownloadInfos downInfos = ThriftConnection.getDownloadInfos(image); if (downInfos == null) { log.error("The DownloadInfos returned by ThriftConnection class are null"); continue; } + // create new instance of Downloader. Downloader d; - d = new Downloader(Globals.getMasterserverHost(), - downInfos.port, Globals.getMasterServerSslContext()); - d.sendToken(downInfos.token); - d.setOutputFilename(Globals.getImageFolder() + "/" + image.name + ".vmdk"); // TODO: how should images be saved? - while (d.readMetaData()) - // TODO: Request range... - d.readBinary(); + try { + d = new Downloader(Globals.getMasterserverHost(), + downInfos.port, Globals.getMasterServerSslContext(), downInfos.token); + } catch (IOException e) { + e.printStackTrace(); + continue; + } + + // start downloading process. + d.download(Globals.getImageFolder() + "/" + image.name + ".vmdk", new WantRangeCallback() { + long pos = 0; + long size = image.fileSize; + + @Override + public FileRange get() { + // get start of range. + if (pos >= size) + return null; + + long startOfRange = pos; + long endOfRange = Math.min(pos + Globals.BLOCKSIZE, image.fileSize); + FileRange range = new FileRange(startOfRange, endOfRange); + pos += Globals.BLOCKSIZE; + return range; + } + }); } try { Thread.sleep(5 * 60 * 1000); -- cgit v1.2.3-55-g7522