diff options
author | Michael Petretti | 2014-07-15 14:24:38 +0200 |
---|---|---|
committer | Michael Petretti | 2014-07-15 14:24:38 +0200 |
commit | afcdbf700dfdee503bd358f322c84e9114470f2e (patch) | |
tree | 3fc3522d709f41318bb4560f42095a5d92610080 | |
parent | Fixed a lot of TODOs and upload works. (diff) | |
download | satellite-daemon-afcdbf700dfdee503bd358f322c84e9114470f2e.tar.gz satellite-daemon-afcdbf700dfdee503bd358f322c84e9114470f2e.tar.xz satellite-daemon-afcdbf700dfdee503bd358f322c84e9114470f2e.zip |
Rename and clean-up.
-rw-r--r-- | src/main/java/org/openslx/satellitedaemon/App.java | 11 | ||||
-rw-r--r-- | src/main/java/org/openslx/satellitedaemon/Globals.java | 63 | ||||
-rw-r--r-- | src/main/java/org/openslx/satellitedaemon/filetransfer/FileDownloadWorker.java (renamed from src/main/java/org/openslx/satellitedaemon/ftp/FtpDownloadWorker.java) | 11 | ||||
-rw-r--r-- | src/main/java/org/openslx/satellitedaemon/filetransfer/FileUploadWorker.java | 85 | ||||
-rw-r--r-- | src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java (renamed from src/main/java/org/openslx/satellitedaemon/ftp/ThriftConnection.java) | 105 | ||||
-rw-r--r-- | src/main/java/org/openslx/satellitedaemon/ftp/FtpUploadWorker.java | 87 |
6 files changed, 173 insertions, 189 deletions
diff --git a/src/main/java/org/openslx/satellitedaemon/App.java b/src/main/java/org/openslx/satellitedaemon/App.java index cd99ec0..1805d5a 100644 --- a/src/main/java/org/openslx/satellitedaemon/App.java +++ b/src/main/java/org/openslx/satellitedaemon/App.java @@ -4,10 +4,11 @@ import java.io.IOException; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; -import org.openslx.satellitedaemon.ftp.FtpDownloadWorker; -import org.openslx.satellitedaemon.ftp.FtpUploadWorker; +import org.openslx.satellitedaemon.filetransfer.FileDownloadWorker; +import org.openslx.satellitedaemon.filetransfer.FileUploadWorker; -/*********************************************************************************************** +/***********************************************************************************************/ +/** * Main class for uploading images from the HS-Server to the Satellite Server. * */ @@ -32,9 +33,9 @@ public class App log.error( "Problem with initializing the SSLContext" ); System.exit( 1 ); } - Thread uploadWorker = new Thread( new FtpUploadWorker() ); + Thread uploadWorker = new Thread( new FileUploadWorker() ); uploadWorker.start(); - Thread downloadWorker = new Thread( new FtpDownloadWorker() ); + Thread downloadWorker = new Thread( new FileDownloadWorker() ); downloadWorker.start(); } } diff --git a/src/main/java/org/openslx/satellitedaemon/Globals.java b/src/main/java/org/openslx/satellitedaemon/Globals.java index afcb3c6..a62ee9e 100644 --- a/src/main/java/org/openslx/satellitedaemon/Globals.java +++ b/src/main/java/org/openslx/satellitedaemon/Globals.java @@ -24,26 +24,28 @@ public class Globals private static boolean loadedProperties = false; private static SSLContext context = null; - /*********************************************************************************************** + /***********************************************************************************************/ + /** * If there are more ints or Strings which should be added to config/global.properties, * add to suiting enum, add a 'case' to getPropertyInt/String() and add checks to * propertiesValid(). * - * As an Example, if you want the value of the FTPSERVERIP you have to call - * Globals.getPropertyString( PropString.FTPSERVERIP ) which returns a string. + * As an Example, if you want the value of the FILETRANSFERSERVERIP you have to call + * Globals.getPropertyString( PropString.FILETRANSFERSERVERIP ) which returns a string. */ public static enum PropInt { - FTPPORT, THRIFTPORT, BLOCKSIZE // More int's? Add them separated with "," + FILETRANSFERPORT, THRIFTPORT, BLOCKSIZE // More int's? Add them separated with "," } public static enum PropString { // More strings's? Add them separated with "," - FTPSERVERIP, KEYSTORETYPE, FTPSKEYSTOREPATH, FTPSKEYSTOREPWD, THRIFTORGANIZATIONNAME, + FILETRANSFERSERVERIP, KEYSTORETYPE, FILETRANSFERSKEYSTOREPATH, FILETRANSFERSKEYSTOREPWD, THRIFTORGANIZATIONNAME, RNDSTRINGENCRYPTALIAS, RNDSTRINGENCRYPTPASSWORD, RNDSTRINGENCRYPTPATH } - /*********************************************************************************************** + /***********************************************************************************************/ + /** * * @return * @throws IOException @@ -61,7 +63,8 @@ public class Globals return true; } - /*********************************************************************************************** + /***********************************************************************************************/ + /** * * @param props * @return @@ -71,8 +74,8 @@ public class Globals String result = null; switch ( props ) { - case FTPPORT: - result = properties.getProperty( "ftp_port" ); + case FILETRANSFERPORT: + result = properties.getProperty( "filetransfer_port" ); break; case BLOCKSIZE: result = properties.getProperty( "blockSize" ); @@ -90,7 +93,8 @@ public class Globals return Integer.valueOf( result ); } - /*********************************************************************************************** + /***********************************************************************************************/ + /** * * @param props * @return @@ -100,17 +104,17 @@ public class Globals String result = null; switch ( props ) { - case FTPSERVERIP: - result = properties.getProperty( "ftp_server_ip" ); + case FILETRANSFERSERVERIP: + result = properties.getProperty( "filetransfer_server_ip" ); break; case KEYSTORETYPE: result = properties.getProperty( "keyStore_type" ); break; - case FTPSKEYSTOREPATH: - result = properties.getProperty( "path_to_ftps_keyStore" ); + case FILETRANSFERSKEYSTOREPATH: + result = properties.getProperty( "path_to_filetransfer_keyStore" ); break; - case FTPSKEYSTOREPWD: - result = properties.getProperty( "ftps_keyStore_password" ); + case FILETRANSFERSKEYSTOREPWD: + result = properties.getProperty( "filetransfer_keyStore_password" ); break; case THRIFTORGANIZATIONNAME: result = properties.getProperty( "organization_name" ); @@ -132,23 +136,24 @@ public class Globals } // TODO: add real checks - /*********************************************************************************************** + /***********************************************************************************************/ + /** * * @return */ public static boolean propertiesValid() { - if ( Globals.getPropertyInt( PropInt.FTPPORT ) == 0 + if ( Globals.getPropertyInt( PropInt.FILETRANSFERPORT ) == 0 || Globals.getPropertyInt( PropInt.BLOCKSIZE ) == 0 || Globals.getPropertyInt( PropInt.THRIFTPORT ) == 0 - || Globals.getPropertyString( PropString.FTPSERVERIP ).isEmpty() - || Globals.getPropertyString( PropString.FTPSERVERIP ) == null + || Globals.getPropertyString( PropString.FILETRANSFERSERVERIP ).isEmpty() + || Globals.getPropertyString( PropString.FILETRANSFERSERVERIP ) == null || Globals.getPropertyString( PropString.KEYSTORETYPE ).isEmpty() || Globals.getPropertyString( PropString.KEYSTORETYPE ) == null - || Globals.getPropertyString( PropString.FTPSKEYSTOREPATH ).isEmpty() - || Globals.getPropertyString( PropString.FTPSKEYSTOREPATH ) == null - || Globals.getPropertyString( PropString.FTPSKEYSTOREPWD ).isEmpty() - || Globals.getPropertyString( PropString.FTPSKEYSTOREPWD ) == null + || Globals.getPropertyString( PropString.FILETRANSFERSKEYSTOREPATH ).isEmpty() + || Globals.getPropertyString( PropString.FILETRANSFERSKEYSTOREPATH ) == null + || Globals.getPropertyString( PropString.FILETRANSFERSKEYSTOREPWD ).isEmpty() + || Globals.getPropertyString( PropString.FILETRANSFERSKEYSTOREPWD ) == null || Globals.getPropertyString( PropString.THRIFTORGANIZATIONNAME ).isEmpty() || Globals.getPropertyString( PropString.THRIFTORGANIZATIONNAME ) == null || Globals.getPropertyString( PropString.RNDSTRINGENCRYPTALIAS ).isEmpty() @@ -164,17 +169,18 @@ public class Globals } } - /*********************************************************************************************** + /***********************************************************************************************/ + /** * * @return */ public static boolean masterServerSslContextInit() { - char[] passphrase = Globals.getPropertyString( PropString.FTPSKEYSTOREPWD ).toCharArray(); + char[] passphrase = Globals.getPropertyString( PropString.FILETRANSFERSKEYSTOREPWD ).toCharArray(); KeyStore keystore; try { keystore = KeyStore.getInstance( "JKS" ); - keystore.load( new FileInputStream( Globals.getPropertyString( PropString.FTPSKEYSTOREPATH ) ), passphrase ); + keystore.load( new FileInputStream( Globals.getPropertyString( PropString.FILETRANSFERSKEYSTOREPATH ) ), passphrase ); TrustManagerFactory tmf = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm() ); tmf.init( keystore ); context = SSLContext.getInstance( "SSLv3" ); @@ -203,7 +209,8 @@ public class Globals } - /*********************************************************************************************** + /***********************************************************************************************/ + /** * * @return */ diff --git a/src/main/java/org/openslx/satellitedaemon/ftp/FtpDownloadWorker.java b/src/main/java/org/openslx/satellitedaemon/filetransfer/FileDownloadWorker.java index 73e0b03..e1ba7e9 100644 --- a/src/main/java/org/openslx/satellitedaemon/ftp/FtpDownloadWorker.java +++ b/src/main/java/org/openslx/satellitedaemon/filetransfer/FileDownloadWorker.java @@ -1,4 +1,4 @@ -package org.openslx.satellitedaemon.ftp; +package org.openslx.satellitedaemon.filetransfer; import java.util.ArrayList; import java.util.List; @@ -12,16 +12,16 @@ import org.openslx.satellitedaemon.Globals.PropString; import org.openslx.satellitedaemon.db.DbImage; -public class FtpDownloadWorker implements Runnable +public class FileDownloadWorker implements Runnable { - private static Logger log = Logger.getLogger( FtpUploadWorker.class ); + private static Logger log = Logger.getLogger( FileUploadWorker.class ); @Override public void run() { while ( true ) { List<DbImage> imageList = DbImage.getAllMarkedForDownload(); - log.info( "FtpDownloadWorker: imageList Contains " + imageList.size() + " items." ); + log.info( "FILTRANSFERDownloadWorker: imageList Contains " + imageList.size() + " items." ); for ( DbImage image : imageList ) { List<Integer> range = new ArrayList<Integer>(); @@ -33,12 +33,11 @@ public class FtpDownloadWorker implements Runnable log.error( "The DownloadInfos returned by ThriftConnection class are null" ); } - Downloader d = new Downloader( Globals.getPropertyString( PropString.FTPSERVERIP ), downInfos.port, Globals.getMasterServerSslContext() ); + Downloader d = new Downloader( Globals.getPropertyString( PropString.FILETRANSFERSERVERIP ), downInfos.port, Globals.getMasterServerSslContext() ); d.sendToken( downInfos.token ); d.setOutputFilename( "/home/michael/Downloads/tescht.whatever" ); while ( d.readMetaData() ) d.readBinary(); - } try { Thread.sleep( 5 * 60 * 1000 ); 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; + } + } + + } +} diff --git a/src/main/java/org/openslx/satellitedaemon/ftp/ThriftConnection.java b/src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java index 5d67635..b656a84 100644 --- a/src/main/java/org/openslx/satellitedaemon/ftp/ThriftConnection.java +++ b/src/main/java/org/openslx/satellitedaemon/filetransfer/ThriftConnection.java @@ -1,4 +1,4 @@ -package org.openslx.satellitedaemon.ftp; +package org.openslx.satellitedaemon.filetransfer; import java.io.FileNotFoundException; import java.io.IOException; @@ -32,8 +32,9 @@ import org.openslx.satellitedaemon.util.EncryptWithServerIdPublicKey; // TODO: Handle all the auto-generated catch blocks in a meaningful way -/*********************************************************************************************** - * Handles the authentication with the Satellite Server and sends the FtpCredentials, which +/***********************************************************************************************/ +/** + * Handles the authentication with the Satellite Server and sends the FILTRANSFERCredentials, which * are necessary for the upload of the image. */ public class ThriftConnection @@ -43,7 +44,8 @@ public class ThriftConnection private static Logger log = Logger.getLogger( ThriftConnection.class ); private static CRCFile crc = null; - /*********************************************************************************************** + /***********************************************************************************************/ + /** * Method for getting UploadeInfos * * !! on the first Call !! @@ -71,37 +73,29 @@ public class ThriftConnection log.info( "Made CRCFile from " + filename ); return theClient.submitImage( sSD.sessionId, imDat, crc.getCrcSums() ); } catch ( TException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("TException"); } catch ( UnrecoverableKeyException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("UnrecoverableKeyException"); } catch ( InvalidKeyException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("InvalidKeyException"); } catch ( NoSuchAlgorithmException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("NoSuchAlgorithmException"); } catch ( CertificateException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("CertificateException"); } catch ( FileNotFoundException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("FileNotFoundException"); } catch ( KeyStoreException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("KeyStoreException"); } catch ( SignatureException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("SignatureException"); } catch ( IOException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("IOException"); } return null; } - /*********************************************************************************************** + /***********************************************************************************************/ + /** * Method for getting UploadeInfos when CRCsum was already transfered on first call. * The method calls getConnection() to check if the connection is ok * and to get the ServerSessionData. If connection is ok, it calls @@ -122,37 +116,29 @@ public class ThriftConnection // on the first time called. null afterwards. return theClient.submitImage( sSD.sessionId, imDat, crc.getCrcSums() ); } catch ( TException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("TException"); } catch ( UnrecoverableKeyException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("UnrecoverableKeyException"); } catch ( InvalidKeyException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("InvalidKeyException"); } catch ( NoSuchAlgorithmException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("NoSuchAlgorithmException"); } catch ( CertificateException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("CertificateException"); } catch ( FileNotFoundException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("FileNotFoundException"); } catch ( KeyStoreException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("KeyStoreException"); } catch ( SignatureException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("SignatureException"); } catch ( IOException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("IOException"); } return null; } - /*********************************************************************************************** + /***********************************************************************************************/ + /** * Method for getting DonwloadInfos. Calls getConnection if client was null. * You need to spezifie all Blocks you want to have in an List. * @@ -170,37 +156,29 @@ public class ThriftConnection return theClient.getImage( imDat.guid, sSD.sessionId, range ); } catch ( TException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("TException"); } catch ( UnrecoverableKeyException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("UnrecoverableKeyException"); } catch ( InvalidKeyException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("InvalidKeyException"); } catch ( NoSuchAlgorithmException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("NoSuchAlgorithmException"); } catch ( CertificateException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("CertificateException"); } catch ( FileNotFoundException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("FileNotFoundException"); } catch ( KeyStoreException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("KeyStoreException"); } catch ( SignatureException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("SignatureException"); } catch ( IOException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("IOException"); } return null; } - /*********************************************************************************************** + /***********************************************************************************************/ + /** * This method checks if there is already a working connection. If not, * newClient() establishes one. Also it does the Authentication if not done * yet. @@ -265,7 +243,8 @@ public class ThriftConnection return theClient; } - /*********************************************************************************************** + /***********************************************************************************************/ + /** * * @return */ @@ -274,7 +253,7 @@ public class ThriftConnection ImageServer.Client newClient = null; try { TTransport transport; - transport = new TSocket( Globals.getPropertyString( PropString.FTPSERVERIP ), Globals.getPropertyInt( PropInt.THRIFTPORT ) ); + transport = new TSocket( Globals.getPropertyString( PropString.FILETRANSFERSERVERIP ), Globals.getPropertyInt( PropInt.THRIFTPORT ) ); transport.open(); TProtocol protocol = new TBinaryProtocol( transport ); newClient = new ImageServer.Client( protocol ); diff --git a/src/main/java/org/openslx/satellitedaemon/ftp/FtpUploadWorker.java b/src/main/java/org/openslx/satellitedaemon/ftp/FtpUploadWorker.java deleted file mode 100644 index 4445a2e..0000000 --- a/src/main/java/org/openslx/satellitedaemon/ftp/FtpUploadWorker.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.openslx.satellitedaemon.ftp; - -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; - -// TODO: Rename all this FTP* Stuff (also the constants in Globals) now that we're not using ftp anymore - -public class FtpUploadWorker implements Runnable -{ - private static Logger log = Logger.getLogger( FtpUploadWorker.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( "FtpUploadWorker: 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.FTPSERVERIP ), 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 ) { // TODO: != - 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; - } - } - - } -} |