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