/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Http { class HttpClient; class HttpClientFactory; } // namespace Http namespace Utils { template< typename R, typename E> class Outcome; namespace Threading { class Executor; } // namespace Threading } // namespace Utils namespace Auth { class AWSCredentials; class AWSCredentialsProvider; } // namespace Auth namespace Client { class RetryStrategy; } // namespace Client namespace DynamoDBStreams { namespace Model { class DescribeStreamRequest; class GetRecordsRequest; class GetShardIteratorRequest; class ListStreamsRequest; typedef Aws::Utils::Outcome DescribeStreamOutcome; typedef Aws::Utils::Outcome GetRecordsOutcome; typedef Aws::Utils::Outcome GetShardIteratorOutcome; typedef Aws::Utils::Outcome ListStreamsOutcome; typedef std::future DescribeStreamOutcomeCallable; typedef std::future GetRecordsOutcomeCallable; typedef std::future GetShardIteratorOutcomeCallable; typedef std::future ListStreamsOutcomeCallable; } // namespace Model class DynamoDBStreamsClient; typedef std::function&) > DescribeStreamResponseReceivedHandler; typedef std::function&) > GetRecordsResponseReceivedHandler; typedef std::function&) > GetShardIteratorResponseReceivedHandler; typedef std::function&) > ListStreamsResponseReceivedHandler; /** * Amazon DynamoDB Streams

This is the Amazon DynamoDB * Streams API Reference. This guide describes the low-level API actions for * accessing streams and processing stream records. For information about * application development with DynamoDB Streams, see the Amazon * DynamoDB Developer Guide.

Note that this document is intended for use * with the following DynamoDB documentation:

The following are short * descriptions of each low-level DynamoDB Streams API action, organized by * function.

  • DescribeStream - Returns detailed information * about a particular stream.

  • GetRecords - Retrieves the * stream records from within a shard.

  • GetShardIterator - * Returns information on how to retrieve the streams record from a shard with a * given shard ID.

  • ListStreams - Returns a list of all the * streams associated with the current AWS account and endpoint.

*/ class AWS_DYNAMODBSTREAMS_API DynamoDBStreamsClient : public Aws::Client::AWSJsonClient { public: typedef Aws::Client::AWSJsonClient BASECLASS; /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ DynamoDBStreamsClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ DynamoDBStreamsClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ DynamoDBStreamsClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); virtual ~DynamoDBStreamsClient(); /** *

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.

You can call DescribeStream at * a maximum rate of 10 times per second.

Each shard in the stream * has a SequenceNumberRange associated with it. If the * SequenceNumberRange has a StartingSequenceNumber but * no EndingSequenceNumber, then the shard is still open (able to * receive more stream records). If both StartingSequenceNumber and * EndingSequenceNumber are present, the that shared is closed and can * no longer receive more data.

*/ virtual Model::DescribeStreamOutcome DescribeStream(const Model::DescribeStreamRequest& request) const; /** *

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.

You can call DescribeStream at * a maximum rate of 10 times per second.

Each shard in the stream * has a SequenceNumberRange associated with it. If the * SequenceNumberRange has a StartingSequenceNumber but * no EndingSequenceNumber, then the shard is still open (able to * receive more stream records). If both StartingSequenceNumber and * EndingSequenceNumber are present, the that shared is closed and can * no longer receive more data.

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeStreamOutcomeCallable DescribeStreamCallable(const Model::DescribeStreamRequest& request) const; /** *

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.

You can call DescribeStream at * a maximum rate of 10 times per second.

Each shard in the stream * has a SequenceNumberRange associated with it. If the * SequenceNumberRange has a StartingSequenceNumber but * no EndingSequenceNumber, then the shard is still open (able to * receive more stream records). If both StartingSequenceNumber and * EndingSequenceNumber are present, the that shared is closed and can * no longer receive more data.

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeStreamAsync(const Model::DescribeStreamRequest& request, const DescribeStreamResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Retrieves the stream records from a given shard.

Specify a shard * iterator using the ShardIterator 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, GetRecords returns an empty * list. Note that it might take multiple calls to get to a portion of the shard * that contains stream records.

GetRecords can * retrieve a maximum of 1 MB of data or 2000 stream records, whichever comes * first.

*/ virtual Model::GetRecordsOutcome GetRecords(const Model::GetRecordsRequest& request) const; /** *

Retrieves the stream records from a given shard.

Specify a shard * iterator using the ShardIterator 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, GetRecords returns an empty * list. Note that it might take multiple calls to get to a portion of the shard * that contains stream records.

GetRecords can * retrieve a maximum of 1 MB of data or 2000 stream records, whichever comes * first.

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::GetRecordsOutcomeCallable GetRecordsCallable(const Model::GetRecordsRequest& request) const; /** *

Retrieves the stream records from a given shard.

Specify a shard * iterator using the ShardIterator 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, GetRecords returns an empty * list. Note that it might take multiple calls to get to a portion of the shard * that contains stream records.

GetRecords can * retrieve a maximum of 1 MB of data or 2000 stream records, whichever comes * first.

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void GetRecordsAsync(const Model::GetRecordsRequest& request, const GetRecordsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

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 GetRecords request to read the stream records from the * shard.

A shard iterator expires 15 minutes after it is returned to * the requester.

*/ virtual Model::GetShardIteratorOutcome GetShardIterator(const Model::GetShardIteratorRequest& request) const; /** *

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 GetRecords request to read the stream records from the * shard.

A shard iterator expires 15 minutes after it is returned to * the requester.

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::GetShardIteratorOutcomeCallable GetShardIteratorCallable(const Model::GetShardIteratorRequest& request) const; /** *

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 GetRecords request to read the stream records from the * shard.

A shard iterator expires 15 minutes after it is returned to * the requester.

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void GetShardIteratorAsync(const Model::GetShardIteratorRequest& request, const GetShardIteratorResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Returns an array of stream ARNs associated with the current account and * endpoint. If the TableName parameter is present, then * ListStreams will return only the streams ARNs for that table.

*

You can call ListStreams at a maximum rate of 5 times per * second.

*/ virtual Model::ListStreamsOutcome ListStreams(const Model::ListStreamsRequest& request) const; /** *

Returns an array of stream ARNs associated with the current account and * endpoint. If the TableName parameter is present, then * ListStreams will return only the streams ARNs for that table.

*

You can call ListStreams at a maximum rate of 5 times per * second.

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::ListStreamsOutcomeCallable ListStreamsCallable(const Model::ListStreamsRequest& request) const; /** *

Returns an array of stream ARNs associated with the current account and * endpoint. If the TableName parameter is present, then * ListStreams will return only the streams ARNs for that table.

*

You can call ListStreams at a maximum rate of 5 times per * second.

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void ListStreamsAsync(const Model::ListStreamsRequest& request, const ListStreamsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; void OverrideEndpoint(const Aws::String& endpoint); private: void init(const Aws::Client::ClientConfiguration& clientConfiguration); void DescribeStreamAsyncHelper(const Model::DescribeStreamRequest& request, const DescribeStreamResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetRecordsAsyncHelper(const Model::GetRecordsRequest& request, const GetRecordsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetShardIteratorAsyncHelper(const Model::GetShardIteratorRequest& request, const GetShardIteratorResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ListStreamsAsyncHelper(const Model::ListStreamsRequest& request, const ListStreamsResponseReceivedHandler& handler, const std::shared_ptr& context) const; Aws::String m_uri; Aws::String m_configScheme; std::shared_ptr m_executor; }; } // namespace DynamoDBStreams } // namespace Aws