/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace TimestreamWrite { /** * Amazon Timestream Write

Amazon Timestream is a fast, * scalable, fully managed time-series database service that makes it easy to store * and analyze trillions of time-series data points per day. With Timestream, you * can easily store and analyze IoT sensor data to derive insights from your IoT * applications. You can analyze industrial telemetry to streamline equipment * management and maintenance. You can also store and analyze log data and metrics * to improve the performance and availability of your applications.

*

Timestream is built from the ground up to effectively ingest, process, and * store time-series data. It organizes data to optimize query processing. It * automatically scales based on the volume of data ingested and on the query * volume to ensure you receive optimal performance while inserting and querying * data. As your data grows over time, Timestream’s adaptive query processing * engine spans across storage tiers to provide fast analysis while reducing * costs.

*/ class AWS_TIMESTREAMWRITE_API TimestreamWriteClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods { public: typedef Aws::Client::AWSJsonClient BASECLASS; static const char* SERVICE_NAME; static const char* ALLOCATION_TAG; typedef TimestreamWriteClientConfiguration ClientConfigurationType; typedef TimestreamWriteEndpointProvider EndpointProviderType; /** * 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. */ TimestreamWriteClient(const Aws::TimestreamWrite::TimestreamWriteClientConfiguration& clientConfiguration = Aws::TimestreamWrite::TimestreamWriteClientConfiguration(), std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG)); /** * 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. */ TimestreamWriteClient(const Aws::Auth::AWSCredentials& credentials, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::TimestreamWrite::TimestreamWriteClientConfiguration& clientConfiguration = Aws::TimestreamWrite::TimestreamWriteClientConfiguration()); /** * 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 */ TimestreamWriteClient(const std::shared_ptr& credentialsProvider, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::TimestreamWrite::TimestreamWriteClientConfiguration& clientConfiguration = Aws::TimestreamWrite::TimestreamWriteClientConfiguration()); /* Legacy constructors due deprecation */ /** * 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. */ TimestreamWriteClient(const Aws::Client::ClientConfiguration& 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. */ TimestreamWriteClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& 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 */ TimestreamWriteClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration); /* End of legacy constructors due deprecation */ virtual ~TimestreamWriteClient(); /** *

Creates a new Timestream batch load task. A batch load task processes data * from a CSV source in an S3 location and writes to a Timestream table. A mapping * from source to target is defined in a batch load task. Errors and events are * written to a report at an S3 location. For the report, if the KMS key is not * specified, the report will be encrypted with an S3 managed key when * SSE_S3 is the option. Otherwise an error is thrown. For more * information, see Amazon * Web Services managed keys. Service * quotas apply. For details, see code * sample.

See Also:

AWS * API Reference

*/ virtual Model::CreateBatchLoadTaskOutcome CreateBatchLoadTask(const Model::CreateBatchLoadTaskRequest& request) const; /** * A Callable wrapper for CreateBatchLoadTask that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateBatchLoadTaskOutcomeCallable CreateBatchLoadTaskCallable(const CreateBatchLoadTaskRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::CreateBatchLoadTask, request); } /** * An Async wrapper for CreateBatchLoadTask that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateBatchLoadTaskAsync(const CreateBatchLoadTaskRequestT& request, const CreateBatchLoadTaskResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::CreateBatchLoadTask, request, handler, context); } /** *

Creates a new Timestream database. If the KMS key is not specified, the * database will be encrypted with a Timestream managed KMS key located in your * account. For more information, see Amazon * Web Services managed keys. Service * quotas apply. For details, see code * sample.

See Also:

AWS * API Reference

*/ virtual Model::CreateDatabaseOutcome CreateDatabase(const Model::CreateDatabaseRequest& request) const; /** * A Callable wrapper for CreateDatabase that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateDatabaseOutcomeCallable CreateDatabaseCallable(const CreateDatabaseRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::CreateDatabase, request); } /** * An Async wrapper for CreateDatabase that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateDatabaseAsync(const CreateDatabaseRequestT& request, const CreateDatabaseResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::CreateDatabase, request, handler, context); } /** *

Adds a new table to an existing database in your account. In an Amazon Web * Services account, table names must be at least unique within each Region if they * are in the same database. You might have identical table names in the same * Region if the tables are in separate databases. While creating the table, you * must specify the table name, database name, and the retention properties. Service * quotas apply. See code * sample for details.

See Also:

AWS * API Reference

*/ virtual Model::CreateTableOutcome CreateTable(const Model::CreateTableRequest& request) const; /** * A Callable wrapper for CreateTable that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateTableOutcomeCallable CreateTableCallable(const CreateTableRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::CreateTable, request); } /** * An Async wrapper for CreateTable that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateTableAsync(const CreateTableRequestT& request, const CreateTableResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::CreateTable, request, handler, context); } /** *

Deletes a given Timestream database. This is an irreversible operation. * After a database is deleted, the time-series data from its tables cannot be * recovered.

All tables in the database must be deleted first, * or a ValidationException error will be thrown.

Due to the nature of * distributed retries, the operation can return either success or a * ResourceNotFoundException. Clients should consider them equivalent.

*

See code * sample for details.

See Also:

AWS * API Reference

*/ virtual Model::DeleteDatabaseOutcome DeleteDatabase(const Model::DeleteDatabaseRequest& request) const; /** * A Callable wrapper for DeleteDatabase that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteDatabaseOutcomeCallable DeleteDatabaseCallable(const DeleteDatabaseRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::DeleteDatabase, request); } /** * An Async wrapper for DeleteDatabase that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteDatabaseAsync(const DeleteDatabaseRequestT& request, const DeleteDatabaseResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::DeleteDatabase, request, handler, context); } /** *

Deletes a given Timestream table. This is an irreversible operation. After a * Timestream database table is deleted, the time-series data stored in the table * cannot be recovered.

Due to the nature of distributed retries, * the operation can return either success or a ResourceNotFoundException. Clients * should consider them equivalent.

See code * sample for details.

See Also:

AWS * API Reference

*/ virtual Model::DeleteTableOutcome DeleteTable(const Model::DeleteTableRequest& request) const; /** * A Callable wrapper for DeleteTable that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteTableOutcomeCallable DeleteTableCallable(const DeleteTableRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::DeleteTable, request); } /** * An Async wrapper for DeleteTable that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteTableAsync(const DeleteTableRequestT& request, const DeleteTableResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::DeleteTable, request, handler, context); } /** *

Returns information about the batch load task, including configurations, * mappings, progress, and other details. Service * quotas apply. See code * sample for details.

See Also:

AWS * API Reference

*/ virtual Model::DescribeBatchLoadTaskOutcome DescribeBatchLoadTask(const Model::DescribeBatchLoadTaskRequest& request) const; /** * A Callable wrapper for DescribeBatchLoadTask that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeBatchLoadTaskOutcomeCallable DescribeBatchLoadTaskCallable(const DescribeBatchLoadTaskRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::DescribeBatchLoadTask, request); } /** * An Async wrapper for DescribeBatchLoadTask that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeBatchLoadTaskAsync(const DescribeBatchLoadTaskRequestT& request, const DescribeBatchLoadTaskResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::DescribeBatchLoadTask, request, handler, context); } /** *

Returns information about the database, including the database name, time * that the database was created, and the total number of tables found within the * database. Service * quotas apply. See code * sample for details.

See Also:

AWS * API Reference

*/ virtual Model::DescribeDatabaseOutcome DescribeDatabase(const Model::DescribeDatabaseRequest& request) const; /** * A Callable wrapper for DescribeDatabase that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeDatabaseOutcomeCallable DescribeDatabaseCallable(const DescribeDatabaseRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::DescribeDatabase, request); } /** * An Async wrapper for DescribeDatabase that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeDatabaseAsync(const DescribeDatabaseRequestT& request, const DescribeDatabaseResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::DescribeDatabase, request, handler, context); } /** *

Returns a list of available endpoints to make Timestream API calls against. * This API operation is available through both the Write and Query APIs.

*

Because the Timestream SDKs are designed to transparently work with the * service’s architecture, including the management and mapping of the service * endpoints, we don't recommend that you use this API operation unless:

*

For detailed information on how and when to * use and implement DescribeEndpoints, see The * Endpoint Discovery Pattern.

See Also:

AWS * API Reference

*/ virtual Model::DescribeEndpointsOutcome DescribeEndpoints(const Model::DescribeEndpointsRequest& request) const; /** * A Callable wrapper for DescribeEndpoints that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeEndpointsOutcomeCallable DescribeEndpointsCallable(const DescribeEndpointsRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::DescribeEndpoints, request); } /** * An Async wrapper for DescribeEndpoints that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeEndpointsAsync(const DescribeEndpointsRequestT& request, const DescribeEndpointsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::DescribeEndpoints, request, handler, context); } /** *

Returns information about the table, including the table name, database name, * retention duration of the memory store and the magnetic store. Service * quotas apply. See code * sample for details.

See Also:

AWS * API Reference

*/ virtual Model::DescribeTableOutcome DescribeTable(const Model::DescribeTableRequest& request) const; /** * A Callable wrapper for DescribeTable that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeTableOutcomeCallable DescribeTableCallable(const DescribeTableRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::DescribeTable, request); } /** * An Async wrapper for DescribeTable that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeTableAsync(const DescribeTableRequestT& request, const DescribeTableResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::DescribeTable, request, handler, context); } /** *

Provides a list of batch load tasks, along with the name, status, when the * task is resumable until, and other details. See code * sample for details.

See Also:

AWS * API Reference

*/ virtual Model::ListBatchLoadTasksOutcome ListBatchLoadTasks(const Model::ListBatchLoadTasksRequest& request) const; /** * A Callable wrapper for ListBatchLoadTasks that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListBatchLoadTasksOutcomeCallable ListBatchLoadTasksCallable(const ListBatchLoadTasksRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::ListBatchLoadTasks, request); } /** * An Async wrapper for ListBatchLoadTasks that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListBatchLoadTasksAsync(const ListBatchLoadTasksRequestT& request, const ListBatchLoadTasksResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::ListBatchLoadTasks, request, handler, context); } /** *

Returns a list of your Timestream databases. Service * quotas apply. See code * sample for details.

See Also:

AWS * API Reference

*/ virtual Model::ListDatabasesOutcome ListDatabases(const Model::ListDatabasesRequest& request) const; /** * A Callable wrapper for ListDatabases that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListDatabasesOutcomeCallable ListDatabasesCallable(const ListDatabasesRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::ListDatabases, request); } /** * An Async wrapper for ListDatabases that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListDatabasesAsync(const ListDatabasesRequestT& request, const ListDatabasesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::ListDatabases, request, handler, context); } /** *

Provides a list of tables, along with the name, status, and retention * properties of each table. See code * sample for details.

See Also:

AWS * API Reference

*/ virtual Model::ListTablesOutcome ListTables(const Model::ListTablesRequest& request) const; /** * A Callable wrapper for ListTables that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListTablesOutcomeCallable ListTablesCallable(const ListTablesRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::ListTables, request); } /** * An Async wrapper for ListTables that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListTablesAsync(const ListTablesRequestT& request, const ListTablesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::ListTables, request, handler, context); } /** *

Lists all tags on a Timestream resource.

See Also:

AWS * API Reference

*/ virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const; /** * A Callable wrapper for ListTagsForResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const ListTagsForResourceRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::ListTagsForResource, request); } /** * An Async wrapper for ListTagsForResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListTagsForResourceAsync(const ListTagsForResourceRequestT& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::ListTagsForResource, request, handler, context); } /** *

See Also:

AWS * API Reference

*/ virtual Model::ResumeBatchLoadTaskOutcome ResumeBatchLoadTask(const Model::ResumeBatchLoadTaskRequest& request) const; /** * A Callable wrapper for ResumeBatchLoadTask that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ResumeBatchLoadTaskOutcomeCallable ResumeBatchLoadTaskCallable(const ResumeBatchLoadTaskRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::ResumeBatchLoadTask, request); } /** * An Async wrapper for ResumeBatchLoadTask that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ResumeBatchLoadTaskAsync(const ResumeBatchLoadTaskRequestT& request, const ResumeBatchLoadTaskResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::ResumeBatchLoadTask, request, handler, context); } /** *

Associates a set of tags with a Timestream resource. You can then activate * these user-defined tags so that they appear on the Billing and Cost Management * console for cost allocation tracking.

See Also:

AWS * API Reference

*/ virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const; /** * A Callable wrapper for TagResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::TagResourceOutcomeCallable TagResourceCallable(const TagResourceRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::TagResource, request); } /** * An Async wrapper for TagResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void TagResourceAsync(const TagResourceRequestT& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::TagResource, request, handler, context); } /** *

Removes the association of tags from a Timestream resource.

See * Also:

AWS * API Reference

*/ virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const; /** * A Callable wrapper for UntagResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UntagResourceOutcomeCallable UntagResourceCallable(const UntagResourceRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::UntagResource, request); } /** * An Async wrapper for UntagResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UntagResourceAsync(const UntagResourceRequestT& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::UntagResource, request, handler, context); } /** *

Modifies the KMS key for an existing database. While updating the database, * you must specify the database name and the identifier of the new KMS key to be * used (KmsKeyId). If there are any concurrent * UpdateDatabase requests, first writer wins.

See code * sample for details.

See Also:

AWS * API Reference

*/ virtual Model::UpdateDatabaseOutcome UpdateDatabase(const Model::UpdateDatabaseRequest& request) const; /** * A Callable wrapper for UpdateDatabase that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateDatabaseOutcomeCallable UpdateDatabaseCallable(const UpdateDatabaseRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::UpdateDatabase, request); } /** * An Async wrapper for UpdateDatabase that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateDatabaseAsync(const UpdateDatabaseRequestT& request, const UpdateDatabaseResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::UpdateDatabase, request, handler, context); } /** *

Modifies the retention duration of the memory store and magnetic store for * your Timestream table. Note that the change in retention duration takes effect * immediately. For example, if the retention period of the memory store was * initially set to 2 hours and then changed to 24 hours, the memory store will be * capable of holding 24 hours of data, but will be populated with 24 hours of data * 22 hours after this change was made. Timestream does not retrieve data from the * magnetic store to populate the memory store.

See code * sample for details.

See Also:

AWS * API Reference

*/ virtual Model::UpdateTableOutcome UpdateTable(const Model::UpdateTableRequest& request) const; /** * A Callable wrapper for UpdateTable that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateTableOutcomeCallable UpdateTableCallable(const UpdateTableRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::UpdateTable, request); } /** * An Async wrapper for UpdateTable that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateTableAsync(const UpdateTableRequestT& request, const UpdateTableResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::UpdateTable, request, handler, context); } /** *

Enables you to write your time-series data into Timestream. You can specify a * single data point or a batch of data points to be inserted into the system. * Timestream offers you a flexible schema that auto detects the column names and * data types for your Timestream tables based on the dimension names and data * types of the data points you specify when invoking writes into the database. *

Timestream supports eventual consistency read semantics. This means that * when you query data immediately after writing a batch of data into Timestream, * the query results might not reflect the results of a recently completed write * operation. The results may also include some stale data. If you repeat the query * request after a short time, the results should return the latest data. Service * quotas apply.

See code * sample for details.

Upserts

You can use the * Version parameter in a WriteRecords request to update * data points. Timestream tracks a version number with each record. * Version defaults to 1 when it's not specified for the * record in the request. Timestream updates an existing record’s measure value * along with its Version when it receives a write request with a * higher Version number for that record. When it receives an update * request where the measure value is the same as that of the existing record, * Timestream still updates Version, if it is greater than the * existing value of Version. You can update a data point as many * times as desired, as long as the value of Version continuously * increases.

For example, suppose you write a new record without * indicating Version in the request. Timestream stores this record, * and set Version to 1. Now, suppose you try to update * this record with a WriteRecords request of the same record with a * different measure value but, like before, do not provide Version. * In this case, Timestream will reject this update with a * RejectedRecordsException since the updated record’s version is not * greater than the existing value of Version.

However, if you were to * resend the update request with Version set to 2, * Timestream would then succeed in updating the record’s value, and the * Version would be set to 2. Next, suppose you sent a * WriteRecords request with this same record and an identical measure * value, but with Version set to 3. In this case, * Timestream would only update Version to 3. Any further * updates would need to send a version number greater than 3, or the * update requests would receive a RejectedRecordsException. *

See Also:

AWS * API Reference

*/ virtual Model::WriteRecordsOutcome WriteRecords(const Model::WriteRecordsRequest& request) const; /** * A Callable wrapper for WriteRecords that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::WriteRecordsOutcomeCallable WriteRecordsCallable(const WriteRecordsRequestT& request) const { return SubmitCallable(&TimestreamWriteClient::WriteRecords, request); } /** * An Async wrapper for WriteRecords that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void WriteRecordsAsync(const WriteRecordsRequestT& request, const WriteRecordsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&TimestreamWriteClient::WriteRecords, request, handler, context); } void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); private: friend class Aws::Client::ClientWithAsyncTemplateMethods; void init(const TimestreamWriteClientConfiguration& clientConfiguration); mutable Aws::Utils::ConcurrentCache m_endpointsCache; TimestreamWriteClientConfiguration m_clientConfiguration; std::shared_ptr m_executor; std::shared_ptr m_endpointProvider; }; } // namespace TimestreamWrite } // namespace Aws