public void progressChanged(ProgressEvent progressEvent) { long bytes = progressEvent.getBytesTransferred(); if (bytes == 0) return; // only interested in non-zero bytes transferProgress.updateProgress(bytes); } }
/** * If only partial part object is merged into the dstFile(due to pause * operation), adjust the file length so that the part starts writing from * the correct position. */ private void truncateDestinationFileIfNecessary() { RandomAccessFile raf = null; if (!FileLocks.lock(dstfile)) { throw new FileLockException("Fail to lock " + dstfile); } try { raf = new RandomAccessFile(dstfile, "rw"); if (lastFullyMergedPartNumber == 0) { raf.setLength(0); } else { long lastByte = ServiceUtils.getLastByteInPart(s3, req, lastFullyMergedPartNumber); if (dstfile.length() < lastByte) { throw new SdkClientException( "File " + dstfile.getAbsolutePath() + " has been modified since last pause."); } raf.setLength(lastByte + 1); download.getProgress().updateProgress(lastByte + 1); } } catch (Exception e) { throw new SdkClientException("Unable to append part file to dstfile " + e.getMessage(), e); } finally { IOUtils.closeQuietly(raf, LOG); FileLocks.unlock(dstfile); } }
/** * Submits a callable for each part to upload to our thread pool and records its corresponding Future. */ private void uploadPartsInParallel(UploadPartRequestFactory requestFactory, String uploadId) { Map<Integer,PartSummary> partNumbers = identifyExistingPartsForResume(uploadId); while (requestFactory.hasMoreRequests()) { if (threadPool.isShutdown()) throw new CancellationException("TransferManager has been shutdown"); UploadPartRequest request = requestFactory.getNextUploadPartRequest(); if (partNumbers.containsKey(request.getPartNumber())) { PartSummary summary = partNumbers.get(request.getPartNumber()); eTagsToSkip.add(new PartETag(request.getPartNumber(), summary .getETag())); transferProgress.updateProgress(summary.getSize()); continue; } futures.add(threadPool.submit(new UploadPartCallable(s3, request, shouldCalculatePartMd5()))); } }
void copyComplete() { markAllDone(); transfer.setState(TransferState.Completed); // Since the copy has completed we can assume all bytes were successfully transferred // This is required since there are no progress updates available during server-side // copying of data. transfer.getProgress().updateProgress(transfer.getProgress().getTotalBytesToTransfer()); // AmazonS3Client takes care of all the events for single part uploads, // so we only need to send a completed event for multipart uploads. if (multipartCopyCallable.isMultipartCopy()) { publishProgress(listener, ProgressEventType.TRANSFER_COMPLETED_EVENT); } }
startingByte = startingByte + fileLength; getObjectRequest.setRange(startingByte, lastByte); transferProgress.updateProgress(Math.min(fileLength, totalBytesToDownload)); totalBytesToDownload = lastByte - startingByte + 1; if (log.isDebugEnabled()) {
public void progressChanged(ProgressEvent progressEvent) { long bytes = progressEvent.getBytesTransferred(); if (bytes == 0) return; // only interested in non-zero bytes transferProgress.updateProgress(bytes); } }
/** * If only partial part object is merged into the dstFile(due to pause * operation), adjust the file length so that the part starts writing from * the correct position. */ private void truncateDestinationFileIfNecessary() { RandomAccessFile raf = null; if (!FileLocks.lock(dstfile)) { throw new FileLockException("Fail to lock " + dstfile); } try { raf = new RandomAccessFile(dstfile, "rw"); if (lastFullyMergedPartNumber == 0) { raf.setLength(0); } else { long lastByte = ServiceUtils.getLastByteInPart(s3, req, lastFullyMergedPartNumber); if (dstfile.length() < lastByte) { throw new SdkClientException( "File " + dstfile.getAbsolutePath() + " has been modified since last pause."); } raf.setLength(lastByte + 1); download.getProgress().updateProgress(lastByte + 1); } } catch (Exception e) { throw new SdkClientException("Unable to append part file to dstfile " + e.getMessage(), e); } finally { IOUtils.closeQuietly(raf, LOG); FileLocks.unlock(dstfile); } }
/** * Submits a callable for each part to upload to our thread pool and records its corresponding Future. */ private void uploadPartsInParallel(UploadPartRequestFactory requestFactory, String uploadId) { Map<Integer,PartSummary> partNumbers = identifyExistingPartsForResume(uploadId); while (requestFactory.hasMoreRequests()) { if (threadPool.isShutdown()) throw new CancellationException("TransferManager has been shutdown"); UploadPartRequest request = requestFactory.getNextUploadPartRequest(); if (partNumbers.containsKey(request.getPartNumber())) { PartSummary summary = partNumbers.get(request.getPartNumber()); eTagsToSkip.add(new PartETag(request.getPartNumber(), summary .getETag())); transferProgress.updateProgress(summary.getSize()); continue; } futures.add(threadPool.submit(new UploadPartCallable(s3, request))); } }
progress.updateProgress(totalFileLength);
progress.updateProgress(totalBytes);
@Override public Download download(String bucket, String key, File file, TransferManager transferManager) { MockS3Bucket mockS3Bucket = mockS3Buckets.get(bucket); MockS3Object mockS3Object = mockS3Bucket.getObjects().get(key); try (FileOutputStream fileOutputStream = new FileOutputStream(file)) { fileOutputStream.write(mockS3Object.getData()); } catch (IOException e) { throw new RuntimeException("Error writing to file " + file, e); } TransferProgress progress = new TransferProgress(); progress.setTotalBytesToTransfer(mockS3Object.getData().length); progress.updateProgress(mockS3Object.getData().length); DownloadImpl download = new DownloadImpl(null, progress, null, null, null, new GetObjectRequest(bucket, key), file, mockS3Object.getObjectMetadata(), false); download.setState(TransferState.Completed); return download; }
@Override public Upload upload(PutObjectRequest putObjectRequest, TransferManager transferManager) { LOGGER.debug( "upload(): putObjectRequest.getBucketName() = " + putObjectRequest.getBucketName() + ", putObjectRequest.getKey() = " + putObjectRequest.getKey()); putObject(putObjectRequest, transferManager.getAmazonS3Client()); long contentLength = putObjectRequest.getFile().length(); TransferProgress progress = new TransferProgress(); progress.setTotalBytesToTransfer(contentLength); progress.updateProgress(contentLength); UploadImpl upload = new UploadImpl(null, progress, null, null); upload.setState(TransferState.Completed); return upload; }
startingByte = startingByte + fileLength; getObjectRequest.setRange(startingByte, lastByte); transferProgress.updateProgress(Math.min(fileLength, totalBytesToDownload)); totalBytesToDownload = lastByte - startingByte + 1; if (log.isDebugEnabled()) {
transferProgress.updateProgress(mockSourceS3Object.getObjectMetadata().getContentLength()); CopyImpl copy = new CopyImpl(MOCK_TRANSFER_DESCRIPTION, transferProgress, null, null); copy.setState(TransferState.Completed);