/** * 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 #include #include #include #include #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 CodeGuruProfiler { namespace Model { class AddNotificationChannelsRequest; class BatchGetFrameMetricDataRequest; class ConfigureAgentRequest; class CreateProfilingGroupRequest; class DeleteProfilingGroupRequest; class DescribeProfilingGroupRequest; class GetFindingsReportAccountSummaryRequest; class GetNotificationConfigurationRequest; class GetPolicyRequest; class GetProfileRequest; class GetRecommendationsRequest; class ListFindingsReportsRequest; class ListProfileTimesRequest; class ListProfilingGroupsRequest; class ListTagsForResourceRequest; class PostAgentProfileRequest; class PutPermissionRequest; class RemoveNotificationChannelRequest; class RemovePermissionRequest; class SubmitFeedbackRequest; class TagResourceRequest; class UntagResourceRequest; class UpdateProfilingGroupRequest; typedef Aws::Utils::Outcome AddNotificationChannelsOutcome; typedef Aws::Utils::Outcome BatchGetFrameMetricDataOutcome; typedef Aws::Utils::Outcome ConfigureAgentOutcome; typedef Aws::Utils::Outcome CreateProfilingGroupOutcome; typedef Aws::Utils::Outcome DeleteProfilingGroupOutcome; typedef Aws::Utils::Outcome DescribeProfilingGroupOutcome; typedef Aws::Utils::Outcome GetFindingsReportAccountSummaryOutcome; typedef Aws::Utils::Outcome GetNotificationConfigurationOutcome; typedef Aws::Utils::Outcome GetPolicyOutcome; typedef Aws::Utils::Outcome GetProfileOutcome; typedef Aws::Utils::Outcome GetRecommendationsOutcome; typedef Aws::Utils::Outcome ListFindingsReportsOutcome; typedef Aws::Utils::Outcome ListProfileTimesOutcome; typedef Aws::Utils::Outcome ListProfilingGroupsOutcome; typedef Aws::Utils::Outcome ListTagsForResourceOutcome; typedef Aws::Utils::Outcome PostAgentProfileOutcome; typedef Aws::Utils::Outcome PutPermissionOutcome; typedef Aws::Utils::Outcome RemoveNotificationChannelOutcome; typedef Aws::Utils::Outcome RemovePermissionOutcome; typedef Aws::Utils::Outcome SubmitFeedbackOutcome; typedef Aws::Utils::Outcome TagResourceOutcome; typedef Aws::Utils::Outcome UntagResourceOutcome; typedef Aws::Utils::Outcome UpdateProfilingGroupOutcome; typedef std::future AddNotificationChannelsOutcomeCallable; typedef std::future BatchGetFrameMetricDataOutcomeCallable; typedef std::future ConfigureAgentOutcomeCallable; typedef std::future CreateProfilingGroupOutcomeCallable; typedef std::future DeleteProfilingGroupOutcomeCallable; typedef std::future DescribeProfilingGroupOutcomeCallable; typedef std::future GetFindingsReportAccountSummaryOutcomeCallable; typedef std::future GetNotificationConfigurationOutcomeCallable; typedef std::future GetPolicyOutcomeCallable; typedef std::future GetProfileOutcomeCallable; typedef std::future GetRecommendationsOutcomeCallable; typedef std::future ListFindingsReportsOutcomeCallable; typedef std::future ListProfileTimesOutcomeCallable; typedef std::future ListProfilingGroupsOutcomeCallable; typedef std::future ListTagsForResourceOutcomeCallable; typedef std::future PostAgentProfileOutcomeCallable; typedef std::future PutPermissionOutcomeCallable; typedef std::future RemoveNotificationChannelOutcomeCallable; typedef std::future RemovePermissionOutcomeCallable; typedef std::future SubmitFeedbackOutcomeCallable; typedef std::future TagResourceOutcomeCallable; typedef std::future UntagResourceOutcomeCallable; typedef std::future UpdateProfilingGroupOutcomeCallable; } // namespace Model class CodeGuruProfilerClient; typedef std::function&) > AddNotificationChannelsResponseReceivedHandler; typedef std::function&) > BatchGetFrameMetricDataResponseReceivedHandler; typedef std::function&) > ConfigureAgentResponseReceivedHandler; typedef std::function&) > CreateProfilingGroupResponseReceivedHandler; typedef std::function&) > DeleteProfilingGroupResponseReceivedHandler; typedef std::function&) > DescribeProfilingGroupResponseReceivedHandler; typedef std::function&) > GetFindingsReportAccountSummaryResponseReceivedHandler; typedef std::function&) > GetNotificationConfigurationResponseReceivedHandler; typedef std::function&) > GetPolicyResponseReceivedHandler; typedef std::function&) > GetProfileResponseReceivedHandler; typedef std::function&) > GetRecommendationsResponseReceivedHandler; typedef std::function&) > ListFindingsReportsResponseReceivedHandler; typedef std::function&) > ListProfileTimesResponseReceivedHandler; typedef std::function&) > ListProfilingGroupsResponseReceivedHandler; typedef std::function&) > ListTagsForResourceResponseReceivedHandler; typedef std::function&) > PostAgentProfileResponseReceivedHandler; typedef std::function&) > PutPermissionResponseReceivedHandler; typedef std::function&) > RemoveNotificationChannelResponseReceivedHandler; typedef std::function&) > RemovePermissionResponseReceivedHandler; typedef std::function&) > SubmitFeedbackResponseReceivedHandler; typedef std::function&) > TagResourceResponseReceivedHandler; typedef std::function&) > UntagResourceResponseReceivedHandler; typedef std::function&) > UpdateProfilingGroupResponseReceivedHandler; /** *

This section provides documentation for the Amazon CodeGuru Profiler API * operations.

 <p>Amazon CodeGuru Profiler collects runtime
   * performance data from your live applications, and provides recommendations that
   * can help you fine-tune your application performance. Using machine learning
   * algorithms, CodeGuru Profiler can help you find your most expensive lines of
   * code and suggest ways you can improve efficiency and remove CPU bottlenecks.
   * </p> <p>Amazon CodeGuru Profiler provides different visualizations
   * of profiling data to help you identify what code is running on the CPU, see how
   * much time is consumed, and suggest ways to reduce CPU utilization. </p>
   * <note> <p>Amazon CodeGuru Profiler currently supports applications
   * written in all Java virtual machine (JVM) languages. While CodeGuru Profiler
   * supports both visualizations and recommendations for applications written in
   * Java, it can also generate visualizations and a subset of recommendations for
   * applications written in other JVM languages.</p> </note> <p>
   * For more information, see <a
   * href="https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html">What
   * is Amazon CodeGuru Profiler</a> in the <i>Amazon CodeGuru Profiler
   * User Guide</i>. </p> 
*/ class AWS_CODEGURUPROFILER_API CodeGuruProfilerClient : 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. */ CodeGuruProfilerClient(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. */ CodeGuruProfilerClient(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 */ CodeGuruProfilerClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); virtual ~CodeGuruProfilerClient(); /** *

Add up to 2 anomaly notifications channels for a profiling * group.

See Also:

AWS * API Reference

*/ virtual Model::AddNotificationChannelsOutcome AddNotificationChannels(const Model::AddNotificationChannelsRequest& request) const; /** *

Add up to 2 anomaly notifications channels for a profiling * group.

See Also:

AWS * API Reference

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

Add up to 2 anomaly notifications channels for a profiling * group.

See Also:

AWS * API Reference

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

Returns the time series of values for a requested list of frame metrics from * a time period.

See Also:

AWS * API Reference

*/ virtual Model::BatchGetFrameMetricDataOutcome BatchGetFrameMetricData(const Model::BatchGetFrameMetricDataRequest& request) const; /** *

Returns the time series of values for a requested list of frame metrics from * a time period.

See Also:

AWS * API Reference

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

Returns the time series of values for a requested list of frame metrics from * a time period.

See Also:

AWS * API Reference

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

Used by profiler agents to report their current state and to receive remote * configuration updates. For example, ConfigureAgent can be used to * tell and agent whether to profile or not and for how long to return profiling * data.

See Also:

AWS * API Reference

*/ virtual Model::ConfigureAgentOutcome ConfigureAgent(const Model::ConfigureAgentRequest& request) const; /** *

Used by profiler agents to report their current state and to receive remote * configuration updates. For example, ConfigureAgent can be used to * tell and agent whether to profile or not and for how long to return profiling * data.

See Also:

AWS * API Reference

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

Used by profiler agents to report their current state and to receive remote * configuration updates. For example, ConfigureAgent can be used to * tell and agent whether to profile or not and for how long to return profiling * data.

See Also:

AWS * API Reference

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

Creates a profiling group.

See Also:

AWS * API Reference

*/ virtual Model::CreateProfilingGroupOutcome CreateProfilingGroup(const Model::CreateProfilingGroupRequest& request) const; /** *

Creates a profiling group.

See Also:

AWS * API Reference

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

Creates a profiling group.

See Also:

AWS * API Reference

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

Deletes a profiling group.

See Also:

AWS * API Reference

*/ virtual Model::DeleteProfilingGroupOutcome DeleteProfilingGroup(const Model::DeleteProfilingGroupRequest& request) const; /** *

Deletes a profiling group.

See Also:

AWS * API Reference

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

Deletes a profiling group.

See Also:

AWS * API Reference

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

Returns a * ProfilingGroupDescription object that contains information * about the requested profiling group.

See Also:

AWS * API Reference

*/ virtual Model::DescribeProfilingGroupOutcome DescribeProfilingGroup(const Model::DescribeProfilingGroupRequest& request) const; /** *

Returns a * ProfilingGroupDescription object that contains information * about the requested profiling group.

See Also:

AWS * API Reference

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

Returns a * ProfilingGroupDescription object that contains information * about the requested profiling group.

See Also:

AWS * API Reference

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

Returns a list of * FindingsReportSummary objects that contain analysis results * for all profiling groups in your AWS account.

See Also:

AWS * API Reference

*/ virtual Model::GetFindingsReportAccountSummaryOutcome GetFindingsReportAccountSummary(const Model::GetFindingsReportAccountSummaryRequest& request) const; /** *

Returns a list of * FindingsReportSummary objects that contain analysis results * for all profiling groups in your AWS account.

See Also:

AWS * API Reference

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

Returns a list of * FindingsReportSummary objects that contain analysis results * for all profiling groups in your AWS account.

See Also:

AWS * API Reference

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

Get the current configuration for anomaly notifications for a profiling * group.

See Also:

AWS * API Reference

*/ virtual Model::GetNotificationConfigurationOutcome GetNotificationConfiguration(const Model::GetNotificationConfigurationRequest& request) const; /** *

Get the current configuration for anomaly notifications for a profiling * group.

See Also:

AWS * API Reference

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

Get the current configuration for anomaly notifications for a profiling * group.

See Also:

AWS * API Reference

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

Returns the JSON-formatted resource-based policy on a profiling group. *

See Also:

AWS * API Reference

*/ virtual Model::GetPolicyOutcome GetPolicy(const Model::GetPolicyRequest& request) const; /** *

Returns the JSON-formatted resource-based policy on a profiling group. *

See Also:

AWS * API Reference

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

Returns the JSON-formatted resource-based policy on a profiling group. *

See Also:

AWS * API Reference

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

Gets the aggregated profile of a profiling group for a specified time range. * Amazon CodeGuru Profiler collects posted agent profiles for a profiling group * into aggregated profiles.

 <note> <p> Because
         * aggregated profiles expire over time <code>GetProfile</code> is not
         * idempotent. </p> </note> <p> Specify the time range for the
         * requested aggregated profile using 1 or 2 of the following parameters:
         * <code>startTime</code>, <code>endTime</code>,
         * <code>period</code>. The maximum time range allowed is 7 days. If
         * you specify all 3 parameters, an exception is thrown. If you specify only
         * <code>period</code>, the latest aggregated profile is returned.
         * </p> <p> Aggregated profiles are available with aggregation periods
         * of 5 minutes, 1 hour, and 1 day, aligned to UTC. The aggregation period of an
         * aggregated profile determines how long it is retained. For more information, see
         * <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AggregatedProfileTime.html">
         * <code>AggregatedProfileTime</code> </a>. The aggregated
         * profile's aggregation period determines how long it is retained by CodeGuru
         * Profiler. </p> <ul> <li> <p> If the aggregation period
         * is 5 minutes, the aggregated profile is retained for 15 days. </p>
         * </li> <li> <p> If the aggregation period is 1 hour, the
         * aggregated profile is retained for 60 days. </p> </li> <li>
         * <p> If the aggregation period is 1 day, the aggregated profile is retained
         * for 3 years. </p> </li> </ul> <p>There are two use cases
         * for calling <code>GetProfile</code>.</p> <ol> <li>
         * <p> If you want to return an aggregated profile that already exists, use
         * <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ListProfileTimes.html">
         * <code>ListProfileTimes</code> </a> to view the time ranges of
         * existing aggregated profiles. Use them in a <code>GetProfile</code>
         * request to return a specific, existing aggregated profile. </p>
         * </li> <li> <p> If you want to return an aggregated profile for
         * a time range that doesn't align with an existing aggregated profile, then
         * CodeGuru Profiler makes a best effort to combine existing aggregated profiles
         * from the requested time range and return them as one aggregated profile.
         * </p> <p> If aggregated profiles do not exist for the full time range
         * requested, then aggregated profiles for a smaller time range are returned. For
         * example, if the requested time range is from 00:00 to 00:20, and the existing
         * aggregated profiles are from 00:15 and 00:25, then the aggregated profiles from
         * 00:15 to 00:20 are returned. </p> </li> </ol>
         * 

See Also:

AWS * API Reference

*/ virtual Model::GetProfileOutcome GetProfile(const Model::GetProfileRequest& request) const; /** *

Gets the aggregated profile of a profiling group for a specified time range. * Amazon CodeGuru Profiler collects posted agent profiles for a profiling group * into aggregated profiles.

 <note> <p> Because
         * aggregated profiles expire over time <code>GetProfile</code> is not
         * idempotent. </p> </note> <p> Specify the time range for the
         * requested aggregated profile using 1 or 2 of the following parameters:
         * <code>startTime</code>, <code>endTime</code>,
         * <code>period</code>. The maximum time range allowed is 7 days. If
         * you specify all 3 parameters, an exception is thrown. If you specify only
         * <code>period</code>, the latest aggregated profile is returned.
         * </p> <p> Aggregated profiles are available with aggregation periods
         * of 5 minutes, 1 hour, and 1 day, aligned to UTC. The aggregation period of an
         * aggregated profile determines how long it is retained. For more information, see
         * <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AggregatedProfileTime.html">
         * <code>AggregatedProfileTime</code> </a>. The aggregated
         * profile's aggregation period determines how long it is retained by CodeGuru
         * Profiler. </p> <ul> <li> <p> If the aggregation period
         * is 5 minutes, the aggregated profile is retained for 15 days. </p>
         * </li> <li> <p> If the aggregation period is 1 hour, the
         * aggregated profile is retained for 60 days. </p> </li> <li>
         * <p> If the aggregation period is 1 day, the aggregated profile is retained
         * for 3 years. </p> </li> </ul> <p>There are two use cases
         * for calling <code>GetProfile</code>.</p> <ol> <li>
         * <p> If you want to return an aggregated profile that already exists, use
         * <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ListProfileTimes.html">
         * <code>ListProfileTimes</code> </a> to view the time ranges of
         * existing aggregated profiles. Use them in a <code>GetProfile</code>
         * request to return a specific, existing aggregated profile. </p>
         * </li> <li> <p> If you want to return an aggregated profile for
         * a time range that doesn't align with an existing aggregated profile, then
         * CodeGuru Profiler makes a best effort to combine existing aggregated profiles
         * from the requested time range and return them as one aggregated profile.
         * </p> <p> If aggregated profiles do not exist for the full time range
         * requested, then aggregated profiles for a smaller time range are returned. For
         * example, if the requested time range is from 00:00 to 00:20, and the existing
         * aggregated profiles are from 00:15 and 00:25, then the aggregated profiles from
         * 00:15 to 00:20 are returned. </p> </li> </ol>
         * 

See Also:

AWS * API Reference

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

Gets the aggregated profile of a profiling group for a specified time range. * Amazon CodeGuru Profiler collects posted agent profiles for a profiling group * into aggregated profiles.

 <note> <p> Because
         * aggregated profiles expire over time <code>GetProfile</code> is not
         * idempotent. </p> </note> <p> Specify the time range for the
         * requested aggregated profile using 1 or 2 of the following parameters:
         * <code>startTime</code>, <code>endTime</code>,
         * <code>period</code>. The maximum time range allowed is 7 days. If
         * you specify all 3 parameters, an exception is thrown. If you specify only
         * <code>period</code>, the latest aggregated profile is returned.
         * </p> <p> Aggregated profiles are available with aggregation periods
         * of 5 minutes, 1 hour, and 1 day, aligned to UTC. The aggregation period of an
         * aggregated profile determines how long it is retained. For more information, see
         * <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AggregatedProfileTime.html">
         * <code>AggregatedProfileTime</code> </a>. The aggregated
         * profile's aggregation period determines how long it is retained by CodeGuru
         * Profiler. </p> <ul> <li> <p> If the aggregation period
         * is 5 minutes, the aggregated profile is retained for 15 days. </p>
         * </li> <li> <p> If the aggregation period is 1 hour, the
         * aggregated profile is retained for 60 days. </p> </li> <li>
         * <p> If the aggregation period is 1 day, the aggregated profile is retained
         * for 3 years. </p> </li> </ul> <p>There are two use cases
         * for calling <code>GetProfile</code>.</p> <ol> <li>
         * <p> If you want to return an aggregated profile that already exists, use
         * <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ListProfileTimes.html">
         * <code>ListProfileTimes</code> </a> to view the time ranges of
         * existing aggregated profiles. Use them in a <code>GetProfile</code>
         * request to return a specific, existing aggregated profile. </p>
         * </li> <li> <p> If you want to return an aggregated profile for
         * a time range that doesn't align with an existing aggregated profile, then
         * CodeGuru Profiler makes a best effort to combine existing aggregated profiles
         * from the requested time range and return them as one aggregated profile.
         * </p> <p> If aggregated profiles do not exist for the full time range
         * requested, then aggregated profiles for a smaller time range are returned. For
         * example, if the requested time range is from 00:00 to 00:20, and the existing
         * aggregated profiles are from 00:15 and 00:25, then the aggregated profiles from
         * 00:15 to 00:20 are returned. </p> </li> </ol>
         * 

See Also:

AWS * API Reference

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

Returns a list of * Recommendation objects that contain recommendations for a * profiling group for a given time period. A list of * Anomaly objects that contains details about anomalies detected * in the profiling group for the same time period is also returned.

See * Also:

AWS * API Reference

*/ virtual Model::GetRecommendationsOutcome GetRecommendations(const Model::GetRecommendationsRequest& request) const; /** *

Returns a list of * Recommendation objects that contain recommendations for a * profiling group for a given time period. A list of * Anomaly objects that contains details about anomalies detected * in the profiling group for the same time period is also returned.

See * Also:

AWS * API Reference

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

Returns a list of * Recommendation objects that contain recommendations for a * profiling group for a given time period. A list of * Anomaly objects that contains details about anomalies detected * in the profiling group for the same time period is also returned.

See * Also:

AWS * API Reference

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

List the available reports for a given profiling group and time * range.

See Also:

AWS * API Reference

*/ virtual Model::ListFindingsReportsOutcome ListFindingsReports(const Model::ListFindingsReportsRequest& request) const; /** *

List the available reports for a given profiling group and time * range.

See Also:

AWS * API Reference

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

List the available reports for a given profiling group and time * range.

See Also:

AWS * API Reference

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

Lists the start times of the available aggregated profiles of a profiling * group for an aggregation period within the specified time range.

See * Also:

AWS * API Reference

*/ virtual Model::ListProfileTimesOutcome ListProfileTimes(const Model::ListProfileTimesRequest& request) const; /** *

Lists the start times of the available aggregated profiles of a profiling * group for an aggregation period within the specified time range.

See * Also:

AWS * API Reference

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

Lists the start times of the available aggregated profiles of a profiling * group for an aggregation period within the specified time range.

See * Also:

AWS * API Reference

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

Returns a list of profiling groups. The profiling groups are returned as * ProfilingGroupDescription objects.

See Also:

* AWS * API Reference

*/ virtual Model::ListProfilingGroupsOutcome ListProfilingGroups(const Model::ListProfilingGroupsRequest& request) const; /** *

Returns a list of profiling groups. The profiling groups are returned as * ProfilingGroupDescription objects.

See Also:

* AWS * API Reference

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

Returns a list of profiling groups. The profiling groups are returned as * ProfilingGroupDescription objects.

See Also:

* AWS * API Reference

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

Returns a list of the tags that are assigned to a specified resource. *

See Also:

AWS * API Reference

*/ virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const; /** *

Returns a list of the tags that are assigned to a specified resource. *

See Also:

AWS * API Reference

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

Returns a list of the tags that are assigned to a specified resource. *

See Also:

AWS * API Reference

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

Submits profiling data to an aggregated profile of a profiling group. To get * an aggregated profile that is created with this profiling data, use * GetProfile .

See Also:

AWS * API Reference

*/ virtual Model::PostAgentProfileOutcome PostAgentProfile(const Model::PostAgentProfileRequest& request) const; /** *

Submits profiling data to an aggregated profile of a profiling group. To get * an aggregated profile that is created with this profiling data, use * GetProfile .

See Also:

AWS * API Reference

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

Submits profiling data to an aggregated profile of a profiling group. To get * an aggregated profile that is created with this profiling data, use * GetProfile .

See Also:

AWS * API Reference

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

Adds permissions to a profiling group's resource-based policy that are * provided using an action group. If a profiling group doesn't have a * resource-based policy, one is created for it using the permissions in the action * group and the roles and users in the principals parameter.

*
 <p> The one supported action group that can be added is
         * <code>agentPermission</code> which grants
         * <code>ConfigureAgent</code> and <code>PostAgent</code>
         * permissions. For more information, see <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-ug/resource-based-policies.html">Resource-based
         * policies in CodeGuru Profiler</a> in the <i>Amazon CodeGuru Profiler
         * User Guide</i>, <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html">
         * <code>ConfigureAgent</code> </a>, and <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_PostAgentProfile.html">
         * <code>PostAgentProfile</code> </a>. </p> <p> The
         * first time you call <code>PutPermission</code> on a profiling group,
         * do not specify a <code>revisionId</code> because it doesn't have a
         * resource-based policy. Subsequent calls must provide a
         * <code>revisionId</code> to specify which revision of the
         * resource-based policy to add the permissions to. </p> <p> The
         * response contains the profiling group's JSON-formatted resource policy.
         * </p> 

See Also:

AWS * API Reference

*/ virtual Model::PutPermissionOutcome PutPermission(const Model::PutPermissionRequest& request) const; /** *

Adds permissions to a profiling group's resource-based policy that are * provided using an action group. If a profiling group doesn't have a * resource-based policy, one is created for it using the permissions in the action * group and the roles and users in the principals parameter.

*
 <p> The one supported action group that can be added is
         * <code>agentPermission</code> which grants
         * <code>ConfigureAgent</code> and <code>PostAgent</code>
         * permissions. For more information, see <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-ug/resource-based-policies.html">Resource-based
         * policies in CodeGuru Profiler</a> in the <i>Amazon CodeGuru Profiler
         * User Guide</i>, <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html">
         * <code>ConfigureAgent</code> </a>, and <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_PostAgentProfile.html">
         * <code>PostAgentProfile</code> </a>. </p> <p> The
         * first time you call <code>PutPermission</code> on a profiling group,
         * do not specify a <code>revisionId</code> because it doesn't have a
         * resource-based policy. Subsequent calls must provide a
         * <code>revisionId</code> to specify which revision of the
         * resource-based policy to add the permissions to. </p> <p> The
         * response contains the profiling group's JSON-formatted resource policy.
         * </p> 

See Also:

AWS * API Reference

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

Adds permissions to a profiling group's resource-based policy that are * provided using an action group. If a profiling group doesn't have a * resource-based policy, one is created for it using the permissions in the action * group and the roles and users in the principals parameter.

*
 <p> The one supported action group that can be added is
         * <code>agentPermission</code> which grants
         * <code>ConfigureAgent</code> and <code>PostAgent</code>
         * permissions. For more information, see <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-ug/resource-based-policies.html">Resource-based
         * policies in CodeGuru Profiler</a> in the <i>Amazon CodeGuru Profiler
         * User Guide</i>, <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html">
         * <code>ConfigureAgent</code> </a>, and <a
         * href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_PostAgentProfile.html">
         * <code>PostAgentProfile</code> </a>. </p> <p> The
         * first time you call <code>PutPermission</code> on a profiling group,
         * do not specify a <code>revisionId</code> because it doesn't have a
         * resource-based policy. Subsequent calls must provide a
         * <code>revisionId</code> to specify which revision of the
         * resource-based policy to add the permissions to. </p> <p> The
         * response contains the profiling group's JSON-formatted resource policy.
         * </p> 

See Also:

AWS * API Reference

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

Remove one anomaly notifications channel for a profiling group.

See * Also:

AWS * API Reference

*/ virtual Model::RemoveNotificationChannelOutcome RemoveNotificationChannel(const Model::RemoveNotificationChannelRequest& request) const; /** *

Remove one anomaly notifications channel for a profiling group.

See * Also:

AWS * API Reference

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

Remove one anomaly notifications channel for a profiling group.

See * Also:

AWS * API Reference

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

Removes permissions from a profiling group's resource-based policy that are * provided using an action group. The one supported action group that can be * removed is agentPermission which grants ConfigureAgent * and PostAgent permissions. For more information, see Resource-based * policies in CodeGuru Profiler in the Amazon CodeGuru Profiler User * Guide, * ConfigureAgent , and * PostAgentProfile .

See Also:

AWS * API Reference

*/ virtual Model::RemovePermissionOutcome RemovePermission(const Model::RemovePermissionRequest& request) const; /** *

Removes permissions from a profiling group's resource-based policy that are * provided using an action group. The one supported action group that can be * removed is agentPermission which grants ConfigureAgent * and PostAgent permissions. For more information, see Resource-based * policies in CodeGuru Profiler in the Amazon CodeGuru Profiler User * Guide, * ConfigureAgent , and * PostAgentProfile .

See Also:

AWS * API Reference

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

Removes permissions from a profiling group's resource-based policy that are * provided using an action group. The one supported action group that can be * removed is agentPermission which grants ConfigureAgent * and PostAgent permissions. For more information, see Resource-based * policies in CodeGuru Profiler in the Amazon CodeGuru Profiler User * Guide, * ConfigureAgent , and * PostAgentProfile .

See Also:

AWS * API Reference

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

Sends feedback to CodeGuru Profiler about whether the anomaly detected by the * analysis is useful or not.

See Also:

AWS * API Reference

*/ virtual Model::SubmitFeedbackOutcome SubmitFeedback(const Model::SubmitFeedbackRequest& request) const; /** *

Sends feedback to CodeGuru Profiler about whether the anomaly detected by the * analysis is useful or not.

See Also:

AWS * API Reference

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

Sends feedback to CodeGuru Profiler about whether the anomaly detected by the * analysis is useful or not.

See Also:

AWS * API Reference

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

Use to assign one or more tags to a resource.

See Also:

AWS * API Reference

*/ virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const; /** *

Use to assign one or more tags to a resource.

See Also:

AWS * API Reference

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

Use to assign one or more tags to a resource.

See Also:

AWS * API Reference

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

Use to remove one or more tags from a resource.

See Also:

* AWS * API Reference

*/ virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const; /** *

Use to remove one or more tags from a resource.

See Also:

* AWS * API Reference

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

Use to remove one or more tags from a resource.

See Also:

* AWS * API Reference

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

Updates a profiling group.

See Also:

AWS * API Reference

*/ virtual Model::UpdateProfilingGroupOutcome UpdateProfilingGroup(const Model::UpdateProfilingGroupRequest& request) const; /** *

Updates a profiling group.

See Also:

AWS * API Reference

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

Updates a profiling group.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void UpdateProfilingGroupAsync(const Model::UpdateProfilingGroupRequest& request, const UpdateProfilingGroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; void OverrideEndpoint(const Aws::String& endpoint); private: void init(const Aws::Client::ClientConfiguration& clientConfiguration); void AddNotificationChannelsAsyncHelper(const Model::AddNotificationChannelsRequest& request, const AddNotificationChannelsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void BatchGetFrameMetricDataAsyncHelper(const Model::BatchGetFrameMetricDataRequest& request, const BatchGetFrameMetricDataResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ConfigureAgentAsyncHelper(const Model::ConfigureAgentRequest& request, const ConfigureAgentResponseReceivedHandler& handler, const std::shared_ptr& context) const; void CreateProfilingGroupAsyncHelper(const Model::CreateProfilingGroupRequest& request, const CreateProfilingGroupResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DeleteProfilingGroupAsyncHelper(const Model::DeleteProfilingGroupRequest& request, const DeleteProfilingGroupResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeProfilingGroupAsyncHelper(const Model::DescribeProfilingGroupRequest& request, const DescribeProfilingGroupResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetFindingsReportAccountSummaryAsyncHelper(const Model::GetFindingsReportAccountSummaryRequest& request, const GetFindingsReportAccountSummaryResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetNotificationConfigurationAsyncHelper(const Model::GetNotificationConfigurationRequest& request, const GetNotificationConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetPolicyAsyncHelper(const Model::GetPolicyRequest& request, const GetPolicyResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetProfileAsyncHelper(const Model::GetProfileRequest& request, const GetProfileResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetRecommendationsAsyncHelper(const Model::GetRecommendationsRequest& request, const GetRecommendationsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ListFindingsReportsAsyncHelper(const Model::ListFindingsReportsRequest& request, const ListFindingsReportsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ListProfileTimesAsyncHelper(const Model::ListProfileTimesRequest& request, const ListProfileTimesResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ListProfilingGroupsAsyncHelper(const Model::ListProfilingGroupsRequest& request, const ListProfilingGroupsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ListTagsForResourceAsyncHelper(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr& context) const; void PostAgentProfileAsyncHelper(const Model::PostAgentProfileRequest& request, const PostAgentProfileResponseReceivedHandler& handler, const std::shared_ptr& context) const; void PutPermissionAsyncHelper(const Model::PutPermissionRequest& request, const PutPermissionResponseReceivedHandler& handler, const std::shared_ptr& context) const; void RemoveNotificationChannelAsyncHelper(const Model::RemoveNotificationChannelRequest& request, const RemoveNotificationChannelResponseReceivedHandler& handler, const std::shared_ptr& context) const; void RemovePermissionAsyncHelper(const Model::RemovePermissionRequest& request, const RemovePermissionResponseReceivedHandler& handler, const std::shared_ptr& context) const; void SubmitFeedbackAsyncHelper(const Model::SubmitFeedbackRequest& request, const SubmitFeedbackResponseReceivedHandler& handler, const std::shared_ptr& context) const; void TagResourceAsyncHelper(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr& context) const; void UntagResourceAsyncHelper(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr& context) const; void UpdateProfilingGroupAsyncHelper(const Model::UpdateProfilingGroupRequest& request, const UpdateProfilingGroupResponseReceivedHandler& handler, const std::shared_ptr& context) const; Aws::String m_uri; Aws::String m_configScheme; std::shared_ptr m_executor; }; } // namespace CodeGuruProfiler } // namespace Aws