diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java')
-rw-r--r-- | src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java b/src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java index 97a8c37..b1fce15 100644 --- a/src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java +++ b/src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java @@ -1,9 +1,44 @@ package org.openslx.imagemaster.serverconnection; +import java.io.IOException; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import org.openslx.imagemaster.crcchecker.CRCChecker; + /** * Class to schedule crc checks. */ -public class CRCScheduler +public class CRCScheduler extends TimerTask { + @Override + public void run() + { + List<UploadingImageInfos> list = ImageProcessor.getImagesToCheck(); + Iterator<UploadingImageInfos> iter = list.iterator(); + while ( iter.hasNext() ) { + UploadingImageInfos image = iter.next(); + List<Integer> blocks = image.getNotCheckedBlocks(); + List<Integer> finishedBlocks = new LinkedList<>(); + try { + finishedBlocks = CRCChecker.checkCRC( image.getFilename(), image.getCrcFilename(), blocks ); + } catch ( IOException e ) { + // TODO: Could not read crc file: tell this to client + } + image.removeBlocks( finishedBlocks ); + } + } + + public static void startScheduling() + { + Timer timer = new Timer( "CRCScheduler" ); + + // start now and fire every 60 s + timer.schedule( new CRCScheduler(), 0, 60000 ); + } + } |