All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.http.async.SdkHttpResponseHandler Maven / Gradle / Ivy

/*
 * Copyright 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 software.amazon.awssdk.http.async;

import java.nio.ByteBuffer;
import org.reactivestreams.Publisher;
import org.reactivestreams.Subscription;
import software.amazon.awssdk.annotations.SdkProtectedApi;
import software.amazon.awssdk.http.SdkHttpResponse;

/**
 * Responsible for handling asynchronous http responses
 *
 * @param  Type of result returned in {@link #complete()}. May be {@link Void}.
 */
@SdkProtectedApi
public interface SdkHttpResponseHandler {

    /**
     * Called when the initial response with headers is received.
     *
     * @param response the {@link SdkHttpResponse}
     */
    void headersReceived(SdkHttpResponse response);

    /**
     * Called when the HTTP client is ready to start sending data to the response handler. Implementations
     * must subscribe to the {@link Publisher} and request data via a {@link org.reactivestreams.Subscription} as
     * they can handle it.
     *
     * 

* If at any time the subscriber wishes to stop receiving data, it may call {@link Subscription#cancel()}. This * will be treated as a failure of the response and the {@link #exceptionOccurred(Throwable)} callback will be invoked. *

*/ void onStream(Publisher publisher); /** * Called when an exception occurs during the request/response. * * This is a terminal method call, no other method invocations should be expected * on the {@link SdkHttpResponseHandler} after this point. * * @param throwable the exception that occurred. */ void exceptionOccurred(Throwable throwable); /** * Called when all parts of the response have been received. * * This is a terminal method call, no other method invocations should be expected * on the {@link SdkHttpResponseHandler} after this point. * * @return Transformed result. */ T complete(); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy