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