List of usage examples for com.amazonaws.services.s3.model ProgressEvent getBytesTransferred
public long getBytesTransferred()
From source file:com.proofpoint.event.collector.combiner.S3StorageSystem.java
License:Apache License
@Override public StoredObject putObject(final URI location, File source) { try {//from w w w. ja va 2 s .co m log.info("starting upload: %s", location); final AtomicLong totalTransferred = new AtomicLong(); Upload upload = s3TransferManager.upload(getS3Bucket(location), getS3ObjectKey(location), source); upload.addProgressListener(new ProgressListener() { @Override public void progressChanged(ProgressEvent progressEvent) { // NOTE: This may be invoked by multiple threads. long transferred = totalTransferred.addAndGet(progressEvent.getBytesTransferred()); log.debug("upload progress: %s: transferred=%d code=%d", location, transferred, progressEvent.getEventCode()); } }); UploadResult uploadResult = upload.waitForUploadResult(); ObjectMetadata metadata = s3Service.getObjectMetadata(getS3Bucket(location), getS3ObjectKey(location)); if (!uploadResult.getETag().equals(metadata.getETag())) { // this might happen in rare cases due to S3's eventual consistency throw new IllegalStateException("uploaded etag is different from retrieved object etag"); } log.info("completed upload: %s (size=%d bytes)", location, totalTransferred.get()); return updateStoredObject(location, metadata); } catch (Exception e) { throw Throwables.propagate(e); } }