Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  * Copyright 2013-2015, 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
 * or in the "license" file accompanying this file. This file is distributed
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
Used to publish transfer events.
public class S3ProgressPublisher extends SDKProgressPublisher {
Used to deliver a persistable transfer to the given s3 listener.

listener only listener of type S3ProgressListener will be notified.
the future of a submitted task; or null if the delivery is synchronous with no future task involved. Note a listener should never block, and therefore returning null is the typical case.
    public static Future<?> publishTransferPersistable(
            final ProgressListener listener,
            final PersistableTransfer persistableTransfer) {
        if (persistableTransfer == null 
        || !(listener instanceof S3ProgressListener))
            return null;
        final S3ProgressListener s3listener = (S3ProgressListener)listener;
        return deliverEvent(s3listenerpersistableTransfer);
    private static Future<?> deliverEvent(final S3ProgressListener listener,
            final PersistableTransfer persistableTransfer) {
        if () { // forces all callbacks to be made synchronously
            return quietlyCallListener(listenerpersistableTransfer);
        if (!) { // forces all callbacks to be made asynchronously
            if (listener instanceof DeliveryMode) {
                DeliveryMode mode = (DeliveryModelistener;
                if (mode.isSyncCallSafe()) {
                    // Safe to call the listener directly
                    return quietlyCallListener(listenerpersistableTransfer);
        // Not safe to call the listener directly; so submit an async task.
        // This is unfortunate as the listener should never block in the first
        // place, but such task submission is necessary to remain backward
        // compatible.
        return setLatestFutureTask(getExecutorService().submit(new Runnable() {
            @Override public void run() {
    private static Future<?> quietlyCallListener(
            final S3ProgressListener listener,
            final PersistableTransfer persistableTransfer) {
        try {
        } catch(Throwable t) {
            // That's right, we need to suppress all errors so as to be on par
            // with the async mode where all failures will be ignored.
                .debug("Failure from the event listener"t);
        return null;
New to GrepCode? Check out our FAQ X