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.imagemaster.thrift.iface.DownloadInfos; import org.openslx.satellitedaemon.Globals; import org.openslx.satellitedaemon.db.DbImage; public class FileDownloadWorker implements Runnable { private static Logger log = Logger.getLogger(FileUploadWorker.class); @Override public void run() { while (true) { List imageList = DbImage.getAllMarkedForDownload(); log.info("imageList Contains " + imageList.size() + " items."); for (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); if (downInfos == null) { log.error("The DownloadInfos returned by ThriftConnection class are null"); continue; } Downloader d; try { d = new Downloader(Globals.getMasterserverHost(), downInfos.port, Globals.getMasterServerSslContext()); } catch (IOException e) { log.warn("Could not connect for download: " + e.toString()); e.printStackTrace(); continue; } d.sendToken(downInfos.token); d.setOutputFilename(Globals.getImageFolder() + "/" + image.name + ".vmdk"); // TODO: how should images be saved? while (d.readMetaData()) // TODO: Request range... d.receiveBinary(); } try { Thread.sleep(5 * 60 * 1000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); return; } } } }