summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/serverconnection
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/serverconnection')
-rw-r--r--src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java4
-rw-r--r--src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java5
-rw-r--r--src/main/java/org/openslx/imagemaster/serverconnection/UploadingImage.java50
3 files changed, 39 insertions, 20 deletions
diff --git a/src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java b/src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java
index c47eb04..c76fb79 100644
--- a/src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java
+++ b/src/main/java/org/openslx/imagemaster/serverconnection/CRCScheduler.java
@@ -55,9 +55,7 @@ public class CRCScheduler extends TimerTask
Timer timer = new Timer( "CRCScheduler" );
// start now and fire every 60 s
- //timer.schedule( new CRCScheduler(), 0, 60000L );
-
- timer.schedule( new CRCScheduler(), 0L, 30000L );
+ timer.schedule( new CRCScheduler(), 0, 60000L );
}
}
diff --git a/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java b/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java
index a27d543..b872b25 100644
--- a/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java
+++ b/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java
@@ -22,6 +22,7 @@ import org.openslx.imagemaster.thrift.iface.UploadError;
import org.openslx.imagemaster.thrift.iface.UploadException;
import org.openslx.imagemaster.thrift.iface.UploadInfos;
import org.openslx.imagemaster.util.RandomString;
+import org.openslx.imagemaster.util.Util;
/**
* Processing the up- and download of images.
@@ -109,8 +110,8 @@ public class ImageProcessor
throw new UploadException( UploadError.INVALID_CRC, "CRC sums were invalid." );
filepath = Globals.getImageDir() + "/" + uuid + ".vmdk";
token = RandomString.generate( 100, false );
- nBlocks = crcSums.size() - 1;
- allBlocks = new int[ nBlocks ]; // initalize array with all zeros which mean that this block is missing
+ nBlocks = Util.getNumberOfBlocks( imageData.fileSize, Globals.blockSize );
+ allBlocks = new int[ nBlocks ]; // initialize array with all zeros which mean that this block is missing
image = new UploadingImage( token, allBlocks, System.currentTimeMillis(), uuid, filepath );
uploadingImages.put( uuid, image );
}
diff --git a/src/main/java/org/openslx/imagemaster/serverconnection/UploadingImage.java b/src/main/java/org/openslx/imagemaster/serverconnection/UploadingImage.java
index 8cbaecf..feb2a1e 100644
--- a/src/main/java/org/openslx/imagemaster/serverconnection/UploadingImage.java
+++ b/src/main/java/org/openslx/imagemaster/serverconnection/UploadingImage.java
@@ -50,7 +50,9 @@ public class UploadingImage
{
if ( blockStatus == null )
return;
- blockStatus[index] = valid;
+ synchronized(blockStatus) {
+ blockStatus[index] = valid;
+ }
}
protected void updateDb()
@@ -60,10 +62,12 @@ public class UploadingImage
List<Integer> missingBlocks = new ArrayList<>();
- for (int block = 0; block < blockStatus.length; block++) {
- if (blockStatus[block] != valid) {
- missingBlocks.add( block );
- }
+ synchronized(blockStatus) {
+ for (int block = 0; block < blockStatus.length; block++) {
+ if (blockStatus[block] != valid) {
+ missingBlocks.add( block );
+ }
+ }
}
dbImage.updateMissingBlocks( missingBlocks );
}
@@ -72,33 +76,43 @@ public class UploadingImage
{
if ( blockStatus == null )
return;
- blockStatus[index] = missing;
+ synchronized(blockStatus) {
+ blockStatus[index] = missing;
+ }
}
protected void setNeedsRequest( int index )
{
if ( blockStatus == null )
return;
- blockStatus[index] *= ( blockStatus[index] < missing ) ? -1 : 1; // switch to positive value if needed
+ synchronized(blockStatus) {
+ blockStatus[index] *= ( blockStatus[index] < missing ) ? -1 : 1; // switch to positive value if needed
+ }
}
protected void setNeedsCheck( int index )
{
if ( blockStatus == null )
return;
- blockStatus[index] *= ( blockStatus[index] > missing ) ? -1 : 1; // switch to negative value if needed
+ synchronized(blockStatus) {
+ blockStatus[index] *= ( blockStatus[index] > missing ) ? -1 : 1; // switch to negative value if needed
+ }
}
protected void increaseTransmittedTimes( int index )
{
if ( blockStatus == null || blockStatus[index] == 200 )
return;
- blockStatus[index] += ( blockStatus[index] <= missing ) ? -1 : 1; // increase in both directions
+ synchronized(blockStatus) {
+ blockStatus[index] += ( blockStatus[index] <= missing ) ? -1 : 1; // increase in both directions
+ }
}
protected int getTimesTransmitted( int index )
{
- return Math.abs( blockStatus[index] );
+ synchronized(blockStatus) {
+ return Math.abs( blockStatus[index] );
+ }
}
protected String getToken()
@@ -110,14 +124,18 @@ public class UploadingImage
{
if ( blockStatus == null )
return false;
- return ( ( blockStatus[index] >= missing ) && ( blockStatus[index] != valid ) );
+ synchronized(blockStatus) {
+ return ( ( blockStatus[index] >= missing ) && ( blockStatus[index] != valid ) );
+ }
}
protected boolean needsCheck( int index )
{
if ( blockStatus == null )
return false;
- return ( blockStatus[index] < missing );
+ synchronized(blockStatus) {
+ return ( blockStatus[index] < missing );
+ }
}
protected int getNumberOfBlocks()
@@ -179,9 +197,11 @@ public class UploadingImage
{
if ( blockStatus == null )
return false;
- for ( int i : blockStatus ) {
- if ( i != 200 )
- return false;
+ synchronized(blockStatus) {
+ for ( int i : blockStatus ) {
+ if ( i != 200 )
+ return false;
+ }
}
return true;
}