summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java')
-rw-r--r--src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java37
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 );
+ }
+
}