/*
* Copyright 2012-2017 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.dynamodbv2;
import javax.annotation.Generated;
import com.amazonaws.services.dynamodbv2.model.*;
/**
* Interface for accessing Amazon DynamoDB Streams asynchronously. Each asynchronous method will return a Java Future
* object representing the asynchronous operation; overloads which accept an {@code AsyncHandler} can be used to receive
* notification when an asynchronous operation completes.
* <p>
* <b>Note:</b> Do not directly implement this interface, new methods are added to it regularly. Extend from
* {@link com.amazonaws.services.dynamodbv2.AbstractAmazonDynamoDBStreamsAsync} instead.
* </p>
* <p>
* <fullname>Amazon DynamoDB</fullname>
* <p>
* Amazon DynamoDB Streams provides API actions for accessing streams and processing stream records. To learn more about
* application development with Streams, see <a
* href="http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html">Capturing Table Activity with
* DynamoDB Streams</a> in the Amazon DynamoDB Developer Guide.
* </p>
*/
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public interface AmazonDynamoDBStreamsAsync extends AmazonDynamoDBStreams {
/**
* <p>
* Returns information about a stream, including the current status of the stream, its Amazon Resource Name (ARN),
* the composition of its shards, and its corresponding DynamoDB table.
* </p>
* <note>
* <p>
* You can call <code>DescribeStream</code> at a maximum rate of 10 times per second.
* </p>
* </note>
* <p>
* Each shard in the stream has a <code>SequenceNumberRange</code> associated with it. If the
* <code>SequenceNumberRange</code> has a <code>StartingSequenceNumber</code> but no
* <code>EndingSequenceNumber</code>, then the shard is still open (able to receive more stream records). If both
* <code>StartingSequenceNumber</code> and <code>EndingSequenceNumber</code> are present, then that shard is closed
* and can no longer receive more data.
* </p>
*
* @param describeStreamRequest
* Represents the input of a <code>DescribeStream</code> operation.
* @return A Java Future containing the result of the DescribeStream operation returned by the service.
* @sample AmazonDynamoDBStreamsAsync.DescribeStream
* @see <a href="http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/DescribeStream"
* target="_top">AWS API Documentation</a>
*/
java.util.concurrent.Future<DescribeStreamResult> describeStreamAsync(DescribeStreamRequest describeStreamRequest);
/**
* <p>
* Returns information about a stream, including the current status of the stream, its Amazon Resource Name (ARN),
* the composition of its shards, and its corresponding DynamoDB table.
* </p>
* <note>
* <p>
* You can call <code>DescribeStream</code> at a maximum rate of 10 times per second.
* </p>
* </note>
* <p>
* Each shard in the stream has a <code>SequenceNumberRange</code> associated with it. If the
* <code>SequenceNumberRange</code> has a <code>StartingSequenceNumber</code> but no
* <code>EndingSequenceNumber</code>, then the shard is still open (able to receive more stream records). If both
* <code>StartingSequenceNumber</code> and <code>EndingSequenceNumber</code> are present, then that shard is closed
* and can no longer receive more data.
* </p>
*
* @param describeStreamRequest
* Represents the input of a <code>DescribeStream</code> operation.
* @param asyncHandler
* Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
* implementation of the callback methods in this interface to receive notification of successful or
* unsuccessful completion of the operation.
* @return A Java Future containing the result of the DescribeStream operation returned by the service.
* @sample AmazonDynamoDBStreamsAsyncHandler.DescribeStream
* @see <a href="http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/DescribeStream"
* target="_top">AWS API Documentation</a>
*/
java.util.concurrent.Future<DescribeStreamResult> describeStreamAsync(DescribeStreamRequest describeStreamRequest,
com.amazonaws.handlers.AsyncHandler<DescribeStreamRequest, DescribeStreamResult> asyncHandler);
/**
* <p>
* Retrieves the stream records from a given shard.
* </p>
* <p>
* Specify a shard iterator using the <code>ShardIterator</code> parameter. The shard iterator specifies the
* position in the shard from which you want to start reading stream records sequentially. If there are no stream
* records available in the portion of the shard that the iterator points to, <code>GetRecords</code> returns an
* empty list. Note that it might take multiple calls to get to a portion of the shard that contains stream records.
* </p>
* <note>
* <p>
* <code>GetRecords</code> can retrieve a maximum of 1 MB of data or 1000 stream records, whichever comes first.
* </p>
* </note>
*
* @param getRecordsRequest
* Represents the input of a <code>GetRecords</code> operation.
* @return A Java Future containing the result of the GetRecords operation returned by the service.
* @sample AmazonDynamoDBStreamsAsync.GetRecords
* @see <a href="http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/GetRecords" target="_top">AWS
* API Documentation</a>
*/
java.util.concurrent.Future<GetRecordsResult> getRecordsAsync(GetRecordsRequest getRecordsRequest);
/**
* <p>
* Retrieves the stream records from a given shard.
* </p>
* <p>
* Specify a shard iterator using the <code>ShardIterator</code> parameter. The shard iterator specifies the
* position in the shard from which you want to start reading stream records sequentially. If there are no stream
* records available in the portion of the shard that the iterator points to, <code>GetRecords</code> returns an
* empty list. Note that it might take multiple calls to get to a portion of the shard that contains stream records.
* </p>
* <note>
* <p>
* <code>GetRecords</code> can retrieve a maximum of 1 MB of data or 1000 stream records, whichever comes first.
* </p>
* </note>
*
* @param getRecordsRequest
* Represents the input of a <code>GetRecords</code> operation.
* @param asyncHandler
* Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
* implementation of the callback methods in this interface to receive notification of successful or
* unsuccessful completion of the operation.
* @return A Java Future containing the result of the GetRecords operation returned by the service.
* @sample AmazonDynamoDBStreamsAsyncHandler.GetRecords
* @see <a href="http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/GetRecords" target="_top">AWS
* API Documentation</a>
*/
java.util.concurrent.Future<GetRecordsResult> getRecordsAsync(GetRecordsRequest getRecordsRequest,
com.amazonaws.handlers.AsyncHandler<GetRecordsRequest, GetRecordsResult> asyncHandler);
/**
* <p>
* Returns a shard iterator. A shard iterator provides information about how to retrieve the stream records from
* within a shard. Use the shard iterator in a subsequent <code>GetRecords</code> request to read the stream records
* from the shard.
* </p>
* <note>
* <p>
* A shard iterator expires 15 minutes after it is returned to the requester.
* </p>
* </note>
*
* @param getShardIteratorRequest
* Represents the input of a <code>GetShardIterator</code> operation.
* @return A Java Future containing the result of the GetShardIterator operation returned by the service.
* @sample AmazonDynamoDBStreamsAsync.GetShardIterator
* @see <a href="http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/GetShardIterator"
* target="_top">AWS API Documentation</a>
*/
java.util.concurrent.Future<GetShardIteratorResult> getShardIteratorAsync(GetShardIteratorRequest getShardIteratorRequest);
/**
* <p>
* Returns a shard iterator. A shard iterator provides information about how to retrieve the stream records from
* within a shard. Use the shard iterator in a subsequent <code>GetRecords</code> request to read the stream records
* from the shard.
* </p>
* <note>
* <p>
* A shard iterator expires 15 minutes after it is returned to the requester.
* </p>
* </note>
*
* @param getShardIteratorRequest
* Represents the input of a <code>GetShardIterator</code> operation.
* @param asyncHandler
* Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
* implementation of the callback methods in this interface to receive notification of successful or
* unsuccessful completion of the operation.
* @return A Java Future containing the result of the GetShardIterator operation returned by the service.
* @sample AmazonDynamoDBStreamsAsyncHandler.GetShardIterator
* @see <a href="http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/GetShardIterator"
* target="_top">AWS API Documentation</a>
*/
java.util.concurrent.Future<GetShardIteratorResult> getShardIteratorAsync(GetShardIteratorRequest getShardIteratorRequest,
com.amazonaws.handlers.AsyncHandler<GetShardIteratorRequest, GetShardIteratorResult> asyncHandler);
/**
* <p>
* Returns an array of stream ARNs associated with the current account and endpoint. If the <code>TableName</code>
* parameter is present, then <code>ListStreams</code> will return only the streams ARNs for that table.
* </p>
* <note>
* <p>
* You can call <code>ListStreams</code> at a maximum rate of 5 times per second.
* </p>
* </note>
*
* @param listStreamsRequest
* Represents the input of a <code>ListStreams</code> operation.
* @return A Java Future containing the result of the ListStreams operation returned by the service.
* @sample AmazonDynamoDBStreamsAsync.ListStreams
* @see <a href="http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/ListStreams" target="_top">AWS
* API Documentation</a>
*/
java.util.concurrent.Future<ListStreamsResult> listStreamsAsync(ListStreamsRequest listStreamsRequest);
/**
* <p>
* Returns an array of stream ARNs associated with the current account and endpoint. If the <code>TableName</code>
* parameter is present, then <code>ListStreams</code> will return only the streams ARNs for that table.
* </p>
* <note>
* <p>
* You can call <code>ListStreams</code> at a maximum rate of 5 times per second.
* </p>
* </note>
*
* @param listStreamsRequest
* Represents the input of a <code>ListStreams</code> operation.
* @param asyncHandler
* Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
* implementation of the callback methods in this interface to receive notification of successful or
* unsuccessful completion of the operation.
* @return A Java Future containing the result of the ListStreams operation returned by the service.
* @sample AmazonDynamoDBStreamsAsyncHandler.ListStreams
* @see <a href="http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/ListStreams" target="_top">AWS
* API Documentation</a>
*/
java.util.concurrent.Future<ListStreamsResult> listStreamsAsync(ListStreamsRequest listStreamsRequest,
com.amazonaws.handlers.AsyncHandler<ListStreamsRequest, ListStreamsResult> asyncHandler);
}