summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/satellitedaemon/filetransfer/FileUploadWorker.java
diff options
context:
space:
mode:
authorMichael Petretti2014-07-15 14:24:38 +0200
committerMichael Petretti2014-07-15 14:24:38 +0200
commitafcdbf700dfdee503bd358f322c84e9114470f2e (patch)
tree3fc3522d709f41318bb4560f42095a5d92610080 /src/main/java/org/openslx/satellitedaemon/filetransfer/FileUploadWorker.java
parentFixed a lot of TODOs and upload works. (diff)
downloadsatellite-daemon-afcdbf700dfdee503bd358f322c84e9114470f2e.tar.gz
satellite-daemon-afcdbf700dfdee503bd358f322c84e9114470f2e.tar.xz
satellite-daemon-afcdbf700dfdee503bd358f322c84e9114470f2e.zip
Rename and clean-up.
Diffstat (limited to 'src/main/java/org/openslx/satellitedaemon/filetransfer/FileUploadWorker.java')
-rw-r--r--src/main/java/org/openslx/satellitedaemon/filetransfer/FileUploadWorker.java85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/satellitedaemon/filetransfer/FileUploadWorker.java b/src/main/java/org/openslx/satellitedaemon/filetransfer/FileUploadWorker.java
new file mode 100644
index 0000000..8e66ea9
--- /dev/null
+++ b/src/main/java/org/openslx/satellitedaemon/filetransfer/FileUploadWorker.java
@@ -0,0 +1,85 @@
+package org.openslx.satellitedaemon.filetransfer;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.openslx.filetransfer.Uploader;
+import org.openslx.imagemaster.thrift.iface.ImageData;
+import org.openslx.imagemaster.thrift.iface.UploadInfos;
+import org.openslx.satellitedaemon.Globals;
+import org.openslx.satellitedaemon.Globals.PropInt;
+import org.openslx.satellitedaemon.Globals.PropString;
+import org.openslx.satellitedaemon.db.DbImage;
+
+public class FileUploadWorker implements Runnable
+{
+ private static Logger log = Logger.getLogger( FileUploadWorker.class );
+
+ @Override
+ public void run()
+ {
+ while ( true ) {
+ // This List contains all Images in the Database that should be uploaded.
+ List<DbImage> imageList = DbImage.getAllMarkedForUpload();
+ log.info( "FILTRANSFERUploadWorker: imageList Contains " + imageList.size() + " items." );
+
+ // Upload one Image after the other.
+ for ( DbImage image : imageList ) {
+ // TODO: still some fields for ImageData, which i can't fill with info from DbImage.
+ // ImageData imDat = new ImageData( image.guid, image.rid,
+ // image.name, System.currentTimeMillis(), System.currentTimeMillis(), image.creator, "anyThing",
+ // true, false, "best", "theVeryBest", image.fileSize );
+
+ ImageData imDat = new ImageData( UUID.randomUUID().toString(), image.rid,
+ image.name, System.currentTimeMillis(), System.currentTimeMillis(), image.creator, "anyThing",
+ true, false, "best", "theVeryBest", image.fileSize );
+
+ // uploadInfo and ThriftAuthentication
+ String crcPath = image.path.concat( ".crc" );
+ UploadInfos upInfos = ThriftConnection.getUploadInfos( imDat, crcPath );
+ if ( upInfos == null ) {
+ log.error( "The UploadInfos returned by ThriftConnection Class are null" );
+
+ return;
+
+ // FIXME: And then..? If you just continue, you'll run into a null pointer exception
+
+ }
+ log.info( "Got upInfos. Trying to create Uploader with token: " + upInfos.token );
+
+ // creating the uploader with the "context"-item.
+ Uploader u = new Uploader( Globals.getPropertyString( PropString.FILETRANSFERSERVERIP ), upInfos.port, Globals.getMasterServerSslContext() );
+ u.sendToken( upInfos.token );
+
+ // continue sending Blocks until getMissingBlocks is empty.
+ while ( !upInfos.getMissingBlocks().isEmpty() ) {
+ // Send all Blocks from upInfos.getMissingBlocks() in ranges.
+ List<Integer> blocks = upInfos.getMissingBlocks();
+ int start = 0;
+ for ( int i = 0; i < blocks.size() - 1; i++ ) {
+ if ( blocks.get( i ) != ( blocks.get( i + 1 ) - 1 ) ) {
+ u.sendRange( start * Globals.getPropertyInt( PropInt.BLOCKSIZE ), i * Globals.getPropertyInt( PropInt.BLOCKSIZE ) );
+ u.sendFile( image.path );
+ start = i + 1;
+ }
+ if ( i == blocks.size() - 2 ) {
+ u.sendRange( start * Globals.getPropertyInt( PropInt.BLOCKSIZE ), ( blocks.size() - 1 ) * Globals.getPropertyInt( PropInt.BLOCKSIZE ) );
+ u.sendFile( image.path );
+ }
+ }
+ upInfos = ThriftConnection.getUploadInfos( imDat );
+ }
+ u.close();
+ }
+ try {
+ Thread.sleep( 5 * 60 * 1000 );
+ // Thread.sleep( 1000 );
+ } catch ( InterruptedException e ) {
+ Thread.currentThread().interrupt();
+ return;
+ }
+ }
+
+ }
+}