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

software.amazon.awssdk.services.lambda.model.InvokeWithResponseStreamResponseHandler Maven / Gradle / Ivy

Go to download

The AWS Java SDK for AWS Lambda module holds the client classes that are used for communicating with AWS Lambda Service

There is a newer version: 2.29.15
Show newest version
/*
 * 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.services.lambda.model;

import java.util.function.Consumer;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkPublicApi;
import software.amazon.awssdk.awscore.eventstream.EventStreamResponseHandler;

/**
 * Response handler for the InvokeWithResponseStream API.
 */
@Generated("software.amazon.awssdk:codegen")
@SdkPublicApi
public interface InvokeWithResponseStreamResponseHandler extends
        EventStreamResponseHandler {
    /**
     * Create a {@link Builder}, used to create a {@link InvokeWithResponseStreamResponseHandler}.
     */
    static Builder builder() {
        return new DefaultInvokeWithResponseStreamResponseHandlerBuilder();
    }

    /**
     * Builder for {@link InvokeWithResponseStreamResponseHandler}. This can be used to create the
     * {@link InvokeWithResponseStreamResponseHandler} in a more functional way, you may also directly implement the
     * {@link InvokeWithResponseStreamResponseHandler} interface if preferred.
     */
    @Generated("software.amazon.awssdk:codegen")
    interface Builder extends
            EventStreamResponseHandler.Builder {
        /**
         * Sets the subscriber to the {@link org.reactivestreams.Publisher} of events. The given {@link Visitor} will be
         * called for each event received by the publisher. Events are requested sequentially after each event is
         * processed. If you need more control over the backpressure strategy consider using
         * {@link #subscriber(java.util.function.Supplier)} instead.
         *
         * @param visitor
         *        Visitor that will be invoked for each incoming event.
         * @return This builder for method chaining
         */
        Builder subscriber(Visitor visitor);

        /**
         * @return A {@link InvokeWithResponseStreamResponseHandler} implementation that can be used in the
         *         InvokeWithResponseStream API call.
         */
        InvokeWithResponseStreamResponseHandler build();
    }

    /**
     * Visitor for subtypes of {@link InvokeWithResponseStreamResponseEvent}.
     */
    @Generated("software.amazon.awssdk:codegen")
    interface Visitor {
        /**
         * @return A new {@link Builder}.
         */
        static Builder builder() {
            return new DefaultInvokeWithResponseStreamVisitorBuilder();
        }

        /**
         * A required "else" or "default" block, invoked when no other more-specific "visit" method is appropriate. This
         * is invoked under two circumstances:
         * 
    *
  1. The event encountered is newer than the current version of the SDK, so no other more-specific "visit" * method could be called. In this case, the provided event will be a generic * {@link InvokeWithResponseStreamResponseEvent}. These events can be processed by upgrading the SDK.
  2. *
  3. The event is known by the SDK, but the "visit" was not overridden above. In this case, the provided event * will be a specific type of {@link InvokeWithResponseStreamResponseEvent}.
  4. *
* * @param event * The event that was not handled by a more-specific "visit" method. */ default void visitDefault(InvokeWithResponseStreamResponseEvent event) { } /** * Invoked when a {@link InvokeResponseStreamUpdate} is encountered. If this is not overridden, the event will * be given to {@link #visitDefault(InvokeWithResponseStreamResponseEvent)}. * * @param event * Event being visited */ default void visitPayloadChunk(InvokeResponseStreamUpdate event) { visitDefault(event); } /** * Invoked when a {@link InvokeWithResponseStreamCompleteEvent} is encountered. If this is not overridden, the * event will be given to {@link #visitDefault(InvokeWithResponseStreamResponseEvent)}. * * @param event * Event being visited */ default void visitInvokeComplete(InvokeWithResponseStreamCompleteEvent event) { visitDefault(event); } /** * Builder for {@link Visitor}. The {@link Visitor} class may also be extended for a more traditional style but * this builder allows for a more functional way of creating a visitor will callback methods. */ @Generated("software.amazon.awssdk:codegen") interface Builder { /** * Callback to invoke when either an unknown event is visited or an unhandled event is visited. * * @param c * Callback to process the event. * @return This builder for method chaining. */ Builder onDefault(Consumer c); /** * @return Visitor implementation. */ Visitor build(); /** * Callback to invoke when a {@link InvokeResponseStreamUpdate} is visited. * * @param c * Callback to process the event. * @return This builder for method chaining. */ Builder onPayloadChunk(Consumer c); /** * Callback to invoke when a {@link InvokeWithResponseStreamCompleteEvent} is visited. * * @param c * Callback to process the event. * @return This builder for method chaining. */ Builder onInvokeComplete(Consumer c); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy