/** * 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 AppConfigData { /** *

AppConfig Data provides the data plane APIs your application uses to retrieve * configuration data. Here's how it works:

Your application retrieves * configuration data by first establishing a configuration session using the * AppConfig Data StartConfigurationSession API action. Your session's * client then makes periodic calls to GetLatestConfiguration to check for * and retrieve the latest data available.

When calling * StartConfigurationSession, your code sends the following * information:

  • Identifiers (ID or name) of an AppConfig * application, environment, and configuration profile that the session tracks.

    *
  • (Optional) The minimum amount of time the session's client must * wait between calls to GetLatestConfiguration.

In * response, AppConfig provides an InitialConfigurationToken to be * given to the session's client and used the first time it calls * GetLatestConfiguration for that session.

This * token should only be used once in your first call to * GetLatestConfiguration. You must use the new token in the * GetLatestConfiguration response * (NextPollConfigurationToken) in each subsequent call to * GetLatestConfiguration.

When calling * GetLatestConfiguration, your client code sends the most recent * ConfigurationToken value it has and receives in response:

    *
  • NextPollConfigurationToken: the * ConfigurationToken value to use on the next call to * GetLatestConfiguration.

  • * NextPollIntervalInSeconds: the duration the client should wait * before making its next call to GetLatestConfiguration. This * duration may vary over the course of the session, so it should be used instead * of the value sent on the StartConfigurationSession call.

  • *
  • The configuration: the latest data intended for the session. This may be * empty if the client already has the latest version of the configuration.

    *

The InitialConfigurationToken and * NextPollConfigurationToken should only be used once. To support * long poll use cases, the tokens are valid for up to 24 hours. If a * GetLatestConfiguration call uses an expired token, the system * returns BadRequestException.

For more * information and to view example CLI commands that show how to retrieve a * configuration using the AppConfig Data StartConfigurationSession * and GetLatestConfiguration API actions, see Retrieving * the configuration in the AppConfig User Guide.

*/ class AWS_APPCONFIGDATA_API AppConfigDataClient : 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 AppConfigDataClientConfiguration ClientConfigurationType; typedef AppConfigDataEndpointProvider 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. */ AppConfigDataClient(const Aws::AppConfigData::AppConfigDataClientConfiguration& clientConfiguration = Aws::AppConfigData::AppConfigDataClientConfiguration(), 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. */ AppConfigDataClient(const Aws::Auth::AWSCredentials& credentials, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::AppConfigData::AppConfigDataClientConfiguration& clientConfiguration = Aws::AppConfigData::AppConfigDataClientConfiguration()); /** * 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 */ AppConfigDataClient(const std::shared_ptr& credentialsProvider, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::AppConfigData::AppConfigDataClientConfiguration& clientConfiguration = Aws::AppConfigData::AppConfigDataClientConfiguration()); /* 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. */ AppConfigDataClient(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. */ AppConfigDataClient(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 */ AppConfigDataClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration); /* End of legacy constructors due deprecation */ virtual ~AppConfigDataClient(); /** *

Retrieves the latest deployed configuration. This API may return empty * configuration data if the client already has the latest version. For more * information about this API action and to view example CLI commands that show how * to use it with the StartConfigurationSession API action, see Retrieving * the configuration in the AppConfig User Guide.

*

Note the following important information.

  • Each configuration * token is only valid for one call to GetLatestConfiguration. The * GetLatestConfiguration response includes a * NextPollConfigurationToken that should always replace the token * used for the just-completed call in preparation for the next one.

  • *
  • GetLatestConfiguration is a priced call. For more * information, see Pricing.

  • *

See Also:

AWS * API Reference

*/ virtual Model::GetLatestConfigurationOutcome GetLatestConfiguration(const Model::GetLatestConfigurationRequest& request) const; /** * A Callable wrapper for GetLatestConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::GetLatestConfigurationOutcomeCallable GetLatestConfigurationCallable(const GetLatestConfigurationRequestT& request) const { return SubmitCallable(&AppConfigDataClient::GetLatestConfiguration, request); } /** * An Async wrapper for GetLatestConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void GetLatestConfigurationAsync(const GetLatestConfigurationRequestT& request, const GetLatestConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&AppConfigDataClient::GetLatestConfiguration, request, handler, context); } /** *

Starts a configuration session used to retrieve a deployed configuration. For * more information about this API action and to view example CLI commands that * show how to use it with the GetLatestConfiguration API action, see Retrieving * the configuration in the AppConfig User Guide.

See * Also:

AWS * API Reference

*/ virtual Model::StartConfigurationSessionOutcome StartConfigurationSession(const Model::StartConfigurationSessionRequest& request) const; /** * A Callable wrapper for StartConfigurationSession that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::StartConfigurationSessionOutcomeCallable StartConfigurationSessionCallable(const StartConfigurationSessionRequestT& request) const { return SubmitCallable(&AppConfigDataClient::StartConfigurationSession, request); } /** * An Async wrapper for StartConfigurationSession that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void StartConfigurationSessionAsync(const StartConfigurationSessionRequestT& request, const StartConfigurationSessionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&AppConfigDataClient::StartConfigurationSession, request, handler, context); } void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); private: friend class Aws::Client::ClientWithAsyncTemplateMethods; void init(const AppConfigDataClientConfiguration& clientConfiguration); AppConfigDataClientConfiguration m_clientConfiguration; std::shared_ptr m_executor; std::shared_ptr m_endpointProvider; }; } // namespace AppConfigData } // namespace Aws