diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/serverconnection/ConnectionHandler.java')
| -rw-r--r-- | src/main/java/org/openslx/imagemaster/serverconnection/ConnectionHandler.java | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/src/main/java/org/openslx/imagemaster/serverconnection/ConnectionHandler.java b/src/main/java/org/openslx/imagemaster/serverconnection/ConnectionHandler.java index 439087a..7a3bf12 100644 --- a/src/main/java/org/openslx/imagemaster/serverconnection/ConnectionHandler.java +++ b/src/main/java/org/openslx/imagemaster/serverconnection/ConnectionHandler.java @@ -10,6 +10,7 @@ import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -115,28 +116,31 @@ public class ConnectionHandler implements IncomingEvent public void incomingUploader( Uploader uploader ) throws IOException { // try to read meta data - while ( uploader.readMetaData() ) { - String token = uploader.getToken(); - log.debug( "Got token :'" + token + "'" ); - // check token to identify the client - if ( !connections.containsKey( token ) ) { - uploader.sendErrorCode( "Token not accepted." ); - uploader.close(); - return; - } - - // check if he was a downloading client - if ( connections.get( token ).type == Connection.UPLOADING ) { - uploader.sendErrorCode( "You can not download, if you are uploading." ); - uploader.close(); - return; - } - // TODO: check which range needs to be sent and send this range - long length = ( new File( connections.get( token ).filepath ) ).length(); + if ( !uploader.readMetaData() ) return; + String token = uploader.getToken(); + log.debug( "Got token :'" + token + "'" ); + // check token to identify the client + if ( !connections.containsKey( token ) ) { + uploader.sendErrorCode( "Token not accepted." ); + uploader.close(); + return; + } - uploader.sendRange( 0, (int)length ); - uploader.sendFile( connections.get( token ).filepath ); + // check if he was a downloading client + if ( connections.get( token ).type == Connection.UPLOADING ) { + uploader.sendErrorCode( "You can not download, if you are uploading." ); + uploader.close(); + return; } + + List<Integer> list = connections.get( token ).client.getLastRequestedBlocks( token ); + // TODO: check which range needs to be sent and send this range + // logik von michael + + long length = ( new File( connections.get( token ).filepath ) ).length(); + + uploader.sendRange( 0, (int)length ); + uploader.sendFile( connections.get( token ).filepath ); uploader.close(); } |
