/*
* Copyright 2010 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amazonaws.services.s3.transfer;
/**
* Describes the progress of a transfer.
*/
public abstract class TransferProgress {
protected volatile long bytesTransfered = 0;
protected volatile long totalBytesToTransfer = -1;
/**
* Returns the number of bytes completed in the associated transfer.
*
* @return The number of bytes completed in the associated transfer.
*/
public long getBytesTransfered() {
return bytesTransfered;
}
/**
* Returns the total size in bytes of the associated transfer, or -1
* if the total size isn't known.
*
* @return The total size in bytes of the associated transfer.
* Returns or -1 if the total size of the associated
* transfer isn't known yet.
*/
public long getTotalBytesToTransfer() {
return totalBytesToTransfer;
}
/**
* Returns a percentage of the number of bytes transfered out of the total
* number of bytes to transfer.
*
* @return A percentage of the number of bytes transfered out of the total
* number of bytes to transfer.
*/
public synchronized double getPercentTransfered() {
if (getBytesTransfered() < 0) return 0;
return ((double)getBytesTransfered() / (double)getTotalBytesToTransfer()) * (double)100;
}
}