diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java')
-rw-r--r-- | src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java b/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java index 9758a2c..f7f9faa 100644 --- a/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java +++ b/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java @@ -109,7 +109,7 @@ public class ImageProcessor token = RandomString.generate( 100, false ); nBlocks = (int)Math.ceil( imageData.fileSize / Globals.blockSize ); allBlocks = new int[ nBlocks ]; // initalize array with all zeros which mean that this block is missing - image = new UploadingImage( token, allBlocks, new Timestamp( System.currentTimeMillis() ), uuid, filepath ); + image = new UploadingImage( token, allBlocks, System.currentTimeMillis(), uuid, filepath ); uploadingImages.put( uuid, image ); } @@ -194,8 +194,9 @@ public class ImageProcessor * @param imageUUID The image of which you want to get the missing blocks from * @param amount The amount of blocks that you want to get * @return The missing blocks + * @throws UploadException If a block was transmitted to many times. */ - private static List<Integer> getNMissingBlocks( UploadingImage image, int amount ) + private static List<Integer> getNMissingBlocks( UploadingImage image, int amount ) throws UploadException { int size = image.getAmountOfMissingBlocks(); if ( amount > size ) @@ -206,6 +207,11 @@ public class ImageProcessor int got = 0; for ( int i = 0; i < image.getNumberOfBlocks(); i++ ) { if ( image.needsRequest( i ) ) { + int times = image.getTimesTransmitted( i ); + if (times > 20) { // TODO: make configurable + throw new UploadException(UploadError.BROKEN_BLOCK, "Block " + i + " was transmitted " + + times + " and is still not valid."); + } result.add( i ); got++; } @@ -263,7 +269,7 @@ public class ImageProcessor for ( DbImage image : list ) { String token = image.token; ConnectionHandler.addConnection( token, image.imagePath, Connection.UPLOADING ); - UploadingImage infos = new UploadingImage( token, image.blockStatus, image.timestamp, + UploadingImage infos = new UploadingImage( token, image.blockStatus, image.timestamp.getTime(), image.uuid, image.imagePath ); CRCFile crcFile = new CRCFile( Globals.getImageDir() + "/" + image.uuid + ".crc" ); try { |