1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/mq/MQ_EXPORTS.h>
8 #include <aws/mq/MQErrors.h>
9 #include <aws/core/client/AWSError.h>
10 #include <aws/core/client/ClientConfiguration.h>
11 #include <aws/core/client/AWSClient.h>
12 #include <aws/core/utils/memory/stl/AWSString.h>
13 #include <aws/core/utils/json/JsonSerializer.h>
14 #include <aws/mq/model/CreateBrokerResult.h>
15 #include <aws/mq/model/CreateConfigurationResult.h>
16 #include <aws/mq/model/CreateUserResult.h>
17 #include <aws/mq/model/DeleteBrokerResult.h>
18 #include <aws/mq/model/DeleteUserResult.h>
19 #include <aws/mq/model/DescribeBrokerResult.h>
20 #include <aws/mq/model/DescribeBrokerEngineTypesResult.h>
21 #include <aws/mq/model/DescribeBrokerInstanceOptionsResult.h>
22 #include <aws/mq/model/DescribeConfigurationResult.h>
23 #include <aws/mq/model/DescribeConfigurationRevisionResult.h>
24 #include <aws/mq/model/DescribeUserResult.h>
25 #include <aws/mq/model/ListBrokersResult.h>
26 #include <aws/mq/model/ListConfigurationRevisionsResult.h>
27 #include <aws/mq/model/ListConfigurationsResult.h>
28 #include <aws/mq/model/ListTagsResult.h>
29 #include <aws/mq/model/ListUsersResult.h>
30 #include <aws/mq/model/RebootBrokerResult.h>
31 #include <aws/mq/model/UpdateBrokerResult.h>
32 #include <aws/mq/model/UpdateConfigurationResult.h>
33 #include <aws/mq/model/UpdateUserResult.h>
34 #include <aws/core/NoResult.h>
35 #include <aws/core/client/AsyncCallerContext.h>
36 #include <aws/core/http/HttpTypes.h>
37 #include <future>
38 #include <functional>
39 
40 namespace Aws
41 {
42 
43 namespace Http
44 {
45   class HttpClient;
46   class HttpClientFactory;
47 } // namespace Http
48 
49 namespace Utils
50 {
51   template< typename R, typename E> class Outcome;
52 namespace Threading
53 {
54   class Executor;
55 } // namespace Threading
56 } // namespace Utils
57 
58 namespace Auth
59 {
60   class AWSCredentials;
61   class AWSCredentialsProvider;
62 } // namespace Auth
63 
64 namespace Client
65 {
66   class RetryStrategy;
67 } // namespace Client
68 
69 namespace MQ
70 {
71 
72 namespace Model
73 {
74         class CreateBrokerRequest;
75         class CreateConfigurationRequest;
76         class CreateTagsRequest;
77         class CreateUserRequest;
78         class DeleteBrokerRequest;
79         class DeleteTagsRequest;
80         class DeleteUserRequest;
81         class DescribeBrokerRequest;
82         class DescribeBrokerEngineTypesRequest;
83         class DescribeBrokerInstanceOptionsRequest;
84         class DescribeConfigurationRequest;
85         class DescribeConfigurationRevisionRequest;
86         class DescribeUserRequest;
87         class ListBrokersRequest;
88         class ListConfigurationRevisionsRequest;
89         class ListConfigurationsRequest;
90         class ListTagsRequest;
91         class ListUsersRequest;
92         class RebootBrokerRequest;
93         class UpdateBrokerRequest;
94         class UpdateConfigurationRequest;
95         class UpdateUserRequest;
96 
97         typedef Aws::Utils::Outcome<CreateBrokerResult, MQError> CreateBrokerOutcome;
98         typedef Aws::Utils::Outcome<CreateConfigurationResult, MQError> CreateConfigurationOutcome;
99         typedef Aws::Utils::Outcome<Aws::NoResult, MQError> CreateTagsOutcome;
100         typedef Aws::Utils::Outcome<CreateUserResult, MQError> CreateUserOutcome;
101         typedef Aws::Utils::Outcome<DeleteBrokerResult, MQError> DeleteBrokerOutcome;
102         typedef Aws::Utils::Outcome<Aws::NoResult, MQError> DeleteTagsOutcome;
103         typedef Aws::Utils::Outcome<DeleteUserResult, MQError> DeleteUserOutcome;
104         typedef Aws::Utils::Outcome<DescribeBrokerResult, MQError> DescribeBrokerOutcome;
105         typedef Aws::Utils::Outcome<DescribeBrokerEngineTypesResult, MQError> DescribeBrokerEngineTypesOutcome;
106         typedef Aws::Utils::Outcome<DescribeBrokerInstanceOptionsResult, MQError> DescribeBrokerInstanceOptionsOutcome;
107         typedef Aws::Utils::Outcome<DescribeConfigurationResult, MQError> DescribeConfigurationOutcome;
108         typedef Aws::Utils::Outcome<DescribeConfigurationRevisionResult, MQError> DescribeConfigurationRevisionOutcome;
109         typedef Aws::Utils::Outcome<DescribeUserResult, MQError> DescribeUserOutcome;
110         typedef Aws::Utils::Outcome<ListBrokersResult, MQError> ListBrokersOutcome;
111         typedef Aws::Utils::Outcome<ListConfigurationRevisionsResult, MQError> ListConfigurationRevisionsOutcome;
112         typedef Aws::Utils::Outcome<ListConfigurationsResult, MQError> ListConfigurationsOutcome;
113         typedef Aws::Utils::Outcome<ListTagsResult, MQError> ListTagsOutcome;
114         typedef Aws::Utils::Outcome<ListUsersResult, MQError> ListUsersOutcome;
115         typedef Aws::Utils::Outcome<RebootBrokerResult, MQError> RebootBrokerOutcome;
116         typedef Aws::Utils::Outcome<UpdateBrokerResult, MQError> UpdateBrokerOutcome;
117         typedef Aws::Utils::Outcome<UpdateConfigurationResult, MQError> UpdateConfigurationOutcome;
118         typedef Aws::Utils::Outcome<UpdateUserResult, MQError> UpdateUserOutcome;
119 
120         typedef std::future<CreateBrokerOutcome> CreateBrokerOutcomeCallable;
121         typedef std::future<CreateConfigurationOutcome> CreateConfigurationOutcomeCallable;
122         typedef std::future<CreateTagsOutcome> CreateTagsOutcomeCallable;
123         typedef std::future<CreateUserOutcome> CreateUserOutcomeCallable;
124         typedef std::future<DeleteBrokerOutcome> DeleteBrokerOutcomeCallable;
125         typedef std::future<DeleteTagsOutcome> DeleteTagsOutcomeCallable;
126         typedef std::future<DeleteUserOutcome> DeleteUserOutcomeCallable;
127         typedef std::future<DescribeBrokerOutcome> DescribeBrokerOutcomeCallable;
128         typedef std::future<DescribeBrokerEngineTypesOutcome> DescribeBrokerEngineTypesOutcomeCallable;
129         typedef std::future<DescribeBrokerInstanceOptionsOutcome> DescribeBrokerInstanceOptionsOutcomeCallable;
130         typedef std::future<DescribeConfigurationOutcome> DescribeConfigurationOutcomeCallable;
131         typedef std::future<DescribeConfigurationRevisionOutcome> DescribeConfigurationRevisionOutcomeCallable;
132         typedef std::future<DescribeUserOutcome> DescribeUserOutcomeCallable;
133         typedef std::future<ListBrokersOutcome> ListBrokersOutcomeCallable;
134         typedef std::future<ListConfigurationRevisionsOutcome> ListConfigurationRevisionsOutcomeCallable;
135         typedef std::future<ListConfigurationsOutcome> ListConfigurationsOutcomeCallable;
136         typedef std::future<ListTagsOutcome> ListTagsOutcomeCallable;
137         typedef std::future<ListUsersOutcome> ListUsersOutcomeCallable;
138         typedef std::future<RebootBrokerOutcome> RebootBrokerOutcomeCallable;
139         typedef std::future<UpdateBrokerOutcome> UpdateBrokerOutcomeCallable;
140         typedef std::future<UpdateConfigurationOutcome> UpdateConfigurationOutcomeCallable;
141         typedef std::future<UpdateUserOutcome> UpdateUserOutcomeCallable;
142 } // namespace Model
143 
144   class MQClient;
145 
146     typedef std::function<void(const MQClient*, const Model::CreateBrokerRequest&, const Model::CreateBrokerOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateBrokerResponseReceivedHandler;
147     typedef std::function<void(const MQClient*, const Model::CreateConfigurationRequest&, const Model::CreateConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateConfigurationResponseReceivedHandler;
148     typedef std::function<void(const MQClient*, const Model::CreateTagsRequest&, const Model::CreateTagsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateTagsResponseReceivedHandler;
149     typedef std::function<void(const MQClient*, const Model::CreateUserRequest&, const Model::CreateUserOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateUserResponseReceivedHandler;
150     typedef std::function<void(const MQClient*, const Model::DeleteBrokerRequest&, const Model::DeleteBrokerOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBrokerResponseReceivedHandler;
151     typedef std::function<void(const MQClient*, const Model::DeleteTagsRequest&, const Model::DeleteTagsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteTagsResponseReceivedHandler;
152     typedef std::function<void(const MQClient*, const Model::DeleteUserRequest&, const Model::DeleteUserOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteUserResponseReceivedHandler;
153     typedef std::function<void(const MQClient*, const Model::DescribeBrokerRequest&, const Model::DescribeBrokerOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeBrokerResponseReceivedHandler;
154     typedef std::function<void(const MQClient*, const Model::DescribeBrokerEngineTypesRequest&, const Model::DescribeBrokerEngineTypesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeBrokerEngineTypesResponseReceivedHandler;
155     typedef std::function<void(const MQClient*, const Model::DescribeBrokerInstanceOptionsRequest&, const Model::DescribeBrokerInstanceOptionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeBrokerInstanceOptionsResponseReceivedHandler;
156     typedef std::function<void(const MQClient*, const Model::DescribeConfigurationRequest&, const Model::DescribeConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeConfigurationResponseReceivedHandler;
157     typedef std::function<void(const MQClient*, const Model::DescribeConfigurationRevisionRequest&, const Model::DescribeConfigurationRevisionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeConfigurationRevisionResponseReceivedHandler;
158     typedef std::function<void(const MQClient*, const Model::DescribeUserRequest&, const Model::DescribeUserOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeUserResponseReceivedHandler;
159     typedef std::function<void(const MQClient*, const Model::ListBrokersRequest&, const Model::ListBrokersOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListBrokersResponseReceivedHandler;
160     typedef std::function<void(const MQClient*, const Model::ListConfigurationRevisionsRequest&, const Model::ListConfigurationRevisionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListConfigurationRevisionsResponseReceivedHandler;
161     typedef std::function<void(const MQClient*, const Model::ListConfigurationsRequest&, const Model::ListConfigurationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListConfigurationsResponseReceivedHandler;
162     typedef std::function<void(const MQClient*, const Model::ListTagsRequest&, const Model::ListTagsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTagsResponseReceivedHandler;
163     typedef std::function<void(const MQClient*, const Model::ListUsersRequest&, const Model::ListUsersOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListUsersResponseReceivedHandler;
164     typedef std::function<void(const MQClient*, const Model::RebootBrokerRequest&, const Model::RebootBrokerOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RebootBrokerResponseReceivedHandler;
165     typedef std::function<void(const MQClient*, const Model::UpdateBrokerRequest&, const Model::UpdateBrokerOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateBrokerResponseReceivedHandler;
166     typedef std::function<void(const MQClient*, const Model::UpdateConfigurationRequest&, const Model::UpdateConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateConfigurationResponseReceivedHandler;
167     typedef std::function<void(const MQClient*, const Model::UpdateUserRequest&, const Model::UpdateUserOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateUserResponseReceivedHandler;
168 
169   /**
170    * <p>Amazon MQ is a managed message broker service for Apache ActiveMQ and
171    * RabbitMQ that makes it easy to set up and operate message brokers in the cloud.
172    * A message broker allows software applications and components to communicate
173    * using various programming languages, operating systems, and formal messaging
174    * protocols.</p>
175    */
176   class AWS_MQ_API MQClient : public Aws::Client::AWSJsonClient
177   {
178     public:
179       typedef Aws::Client::AWSJsonClient BASECLASS;
180 
181        /**
182         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
183         * is not specified, it will be initialized to default values.
184         */
185         MQClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
186 
187        /**
188         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
189         * is not specified, it will be initialized to default values.
190         */
191         MQClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
192 
193        /**
194         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
195         * the default http client factory will be used
196         */
197         MQClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
198             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
199 
200         virtual ~MQClient();
201 
202 
203         /**
204          * <p>Creates a broker. Note: This API is asynchronous.</p> <p>To create a broker,
205          * you must either use the AmazonMQFullAccess IAM policy or include the following
206          * EC2 permissions in your IAM policy.</p>
207          * <ul><li><p>ec2:CreateNetworkInterface</p> <p>This permission is required to
208          * allow Amazon MQ to create an elastic network interface (ENI) on behalf of your
209          * account.</p></li> <li><p>ec2:CreateNetworkInterfacePermission</p> <p>This
210          * permission is required to attach the ENI to the broker instance.</p></li>
211          * <li><p>ec2:DeleteNetworkInterface</p></li>
212          * <li><p>ec2:DeleteNetworkInterfacePermission</p></li>
213          * <li><p>ec2:DetachNetworkInterface</p></li>
214          * <li><p>ec2:DescribeInternetGateways</p></li>
215          * <li><p>ec2:DescribeNetworkInterfaces</p></li>
216          * <li><p>ec2:DescribeNetworkInterfacePermissions</p></li>
217          * <li><p>ec2:DescribeRouteTables</p></li>
218          * <li><p>ec2:DescribeSecurityGroups</p></li> <li><p>ec2:DescribeSubnets</p></li>
219          * <li><p>ec2:DescribeVpcs</p></li></ul> <p>For more information, see <a
220          * href="https://docs.aws.amazon.com//amazon-mq/latest/developer-guide/amazon-mq-setting-up.html#create-iam-user">Create
221          * an IAM User and Get Your AWS Credentials</a> and <a
222          * href="https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/connecting-to-amazon-mq.html#never-modify-delete-elastic-network-interface">Never
223          * Modify or Delete the Amazon MQ Elastic Network Interface</a> in the <i>Amazon MQ
224          * Developer Guide</i>.</p><p><h3>See Also:</h3>   <a
225          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateBroker">AWS API
226          * Reference</a></p>
227          */
228         virtual Model::CreateBrokerOutcome CreateBroker(const Model::CreateBrokerRequest& request) const;
229 
230         /**
231          * <p>Creates a broker. Note: This API is asynchronous.</p> <p>To create a broker,
232          * you must either use the AmazonMQFullAccess IAM policy or include the following
233          * EC2 permissions in your IAM policy.</p>
234          * <ul><li><p>ec2:CreateNetworkInterface</p> <p>This permission is required to
235          * allow Amazon MQ to create an elastic network interface (ENI) on behalf of your
236          * account.</p></li> <li><p>ec2:CreateNetworkInterfacePermission</p> <p>This
237          * permission is required to attach the ENI to the broker instance.</p></li>
238          * <li><p>ec2:DeleteNetworkInterface</p></li>
239          * <li><p>ec2:DeleteNetworkInterfacePermission</p></li>
240          * <li><p>ec2:DetachNetworkInterface</p></li>
241          * <li><p>ec2:DescribeInternetGateways</p></li>
242          * <li><p>ec2:DescribeNetworkInterfaces</p></li>
243          * <li><p>ec2:DescribeNetworkInterfacePermissions</p></li>
244          * <li><p>ec2:DescribeRouteTables</p></li>
245          * <li><p>ec2:DescribeSecurityGroups</p></li> <li><p>ec2:DescribeSubnets</p></li>
246          * <li><p>ec2:DescribeVpcs</p></li></ul> <p>For more information, see <a
247          * href="https://docs.aws.amazon.com//amazon-mq/latest/developer-guide/amazon-mq-setting-up.html#create-iam-user">Create
248          * an IAM User and Get Your AWS Credentials</a> and <a
249          * href="https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/connecting-to-amazon-mq.html#never-modify-delete-elastic-network-interface">Never
250          * Modify or Delete the Amazon MQ Elastic Network Interface</a> in the <i>Amazon MQ
251          * Developer Guide</i>.</p><p><h3>See Also:</h3>   <a
252          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateBroker">AWS API
253          * Reference</a></p>
254          *
255          * returns a future to the operation so that it can be executed in parallel to other requests.
256          */
257         virtual Model::CreateBrokerOutcomeCallable CreateBrokerCallable(const Model::CreateBrokerRequest& request) const;
258 
259         /**
260          * <p>Creates a broker. Note: This API is asynchronous.</p> <p>To create a broker,
261          * you must either use the AmazonMQFullAccess IAM policy or include the following
262          * EC2 permissions in your IAM policy.</p>
263          * <ul><li><p>ec2:CreateNetworkInterface</p> <p>This permission is required to
264          * allow Amazon MQ to create an elastic network interface (ENI) on behalf of your
265          * account.</p></li> <li><p>ec2:CreateNetworkInterfacePermission</p> <p>This
266          * permission is required to attach the ENI to the broker instance.</p></li>
267          * <li><p>ec2:DeleteNetworkInterface</p></li>
268          * <li><p>ec2:DeleteNetworkInterfacePermission</p></li>
269          * <li><p>ec2:DetachNetworkInterface</p></li>
270          * <li><p>ec2:DescribeInternetGateways</p></li>
271          * <li><p>ec2:DescribeNetworkInterfaces</p></li>
272          * <li><p>ec2:DescribeNetworkInterfacePermissions</p></li>
273          * <li><p>ec2:DescribeRouteTables</p></li>
274          * <li><p>ec2:DescribeSecurityGroups</p></li> <li><p>ec2:DescribeSubnets</p></li>
275          * <li><p>ec2:DescribeVpcs</p></li></ul> <p>For more information, see <a
276          * href="https://docs.aws.amazon.com//amazon-mq/latest/developer-guide/amazon-mq-setting-up.html#create-iam-user">Create
277          * an IAM User and Get Your AWS Credentials</a> and <a
278          * href="https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/connecting-to-amazon-mq.html#never-modify-delete-elastic-network-interface">Never
279          * Modify or Delete the Amazon MQ Elastic Network Interface</a> in the <i>Amazon MQ
280          * Developer Guide</i>.</p><p><h3>See Also:</h3>   <a
281          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateBroker">AWS API
282          * Reference</a></p>
283          *
284          * Queues the request into a thread executor and triggers associated callback when operation has finished.
285          */
286         virtual void CreateBrokerAsync(const Model::CreateBrokerRequest& request, const CreateBrokerResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
287 
288         /**
289          * <p>Creates a new configuration for the specified configuration name. Amazon MQ
290          * uses the default configuration (the engine type and version).</p><p><h3>See
291          * Also:</h3>   <a
292          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateConfiguration">AWS
293          * API Reference</a></p>
294          */
295         virtual Model::CreateConfigurationOutcome CreateConfiguration(const Model::CreateConfigurationRequest& request) const;
296 
297         /**
298          * <p>Creates a new configuration for the specified configuration name. Amazon MQ
299          * uses the default configuration (the engine type and version).</p><p><h3>See
300          * Also:</h3>   <a
301          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateConfiguration">AWS
302          * API Reference</a></p>
303          *
304          * returns a future to the operation so that it can be executed in parallel to other requests.
305          */
306         virtual Model::CreateConfigurationOutcomeCallable CreateConfigurationCallable(const Model::CreateConfigurationRequest& request) const;
307 
308         /**
309          * <p>Creates a new configuration for the specified configuration name. Amazon MQ
310          * uses the default configuration (the engine type and version).</p><p><h3>See
311          * Also:</h3>   <a
312          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateConfiguration">AWS
313          * API Reference</a></p>
314          *
315          * Queues the request into a thread executor and triggers associated callback when operation has finished.
316          */
317         virtual void CreateConfigurationAsync(const Model::CreateConfigurationRequest& request, const CreateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
318 
319         /**
320          * <p>Add a tag to a resource.</p><p><h3>See Also:</h3>   <a
321          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateTags">AWS API
322          * Reference</a></p>
323          */
324         virtual Model::CreateTagsOutcome CreateTags(const Model::CreateTagsRequest& request) const;
325 
326         /**
327          * <p>Add a tag to a resource.</p><p><h3>See Also:</h3>   <a
328          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateTags">AWS API
329          * Reference</a></p>
330          *
331          * returns a future to the operation so that it can be executed in parallel to other requests.
332          */
333         virtual Model::CreateTagsOutcomeCallable CreateTagsCallable(const Model::CreateTagsRequest& request) const;
334 
335         /**
336          * <p>Add a tag to a resource.</p><p><h3>See Also:</h3>   <a
337          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateTags">AWS API
338          * Reference</a></p>
339          *
340          * Queues the request into a thread executor and triggers associated callback when operation has finished.
341          */
342         virtual void CreateTagsAsync(const Model::CreateTagsRequest& request, const CreateTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
343 
344         /**
345          * <p>Creates an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
346          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateUser">AWS API
347          * Reference</a></p>
348          */
349         virtual Model::CreateUserOutcome CreateUser(const Model::CreateUserRequest& request) const;
350 
351         /**
352          * <p>Creates an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
353          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateUser">AWS API
354          * Reference</a></p>
355          *
356          * returns a future to the operation so that it can be executed in parallel to other requests.
357          */
358         virtual Model::CreateUserOutcomeCallable CreateUserCallable(const Model::CreateUserRequest& request) const;
359 
360         /**
361          * <p>Creates an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
362          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/CreateUser">AWS API
363          * Reference</a></p>
364          *
365          * Queues the request into a thread executor and triggers associated callback when operation has finished.
366          */
367         virtual void CreateUserAsync(const Model::CreateUserRequest& request, const CreateUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
368 
369         /**
370          * <p>Deletes a broker. Note: This API is asynchronous.</p><p><h3>See Also:</h3>
371          * <a href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DeleteBroker">AWS
372          * API Reference</a></p>
373          */
374         virtual Model::DeleteBrokerOutcome DeleteBroker(const Model::DeleteBrokerRequest& request) const;
375 
376         /**
377          * <p>Deletes a broker. Note: This API is asynchronous.</p><p><h3>See Also:</h3>
378          * <a href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DeleteBroker">AWS
379          * API Reference</a></p>
380          *
381          * returns a future to the operation so that it can be executed in parallel to other requests.
382          */
383         virtual Model::DeleteBrokerOutcomeCallable DeleteBrokerCallable(const Model::DeleteBrokerRequest& request) const;
384 
385         /**
386          * <p>Deletes a broker. Note: This API is asynchronous.</p><p><h3>See Also:</h3>
387          * <a href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DeleteBroker">AWS
388          * API Reference</a></p>
389          *
390          * Queues the request into a thread executor and triggers associated callback when operation has finished.
391          */
392         virtual void DeleteBrokerAsync(const Model::DeleteBrokerRequest& request, const DeleteBrokerResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
393 
394         /**
395          * <p>Removes a tag from a resource.</p><p><h3>See Also:</h3>   <a
396          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DeleteTags">AWS API
397          * Reference</a></p>
398          */
399         virtual Model::DeleteTagsOutcome DeleteTags(const Model::DeleteTagsRequest& request) const;
400 
401         /**
402          * <p>Removes a tag from a resource.</p><p><h3>See Also:</h3>   <a
403          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DeleteTags">AWS API
404          * Reference</a></p>
405          *
406          * returns a future to the operation so that it can be executed in parallel to other requests.
407          */
408         virtual Model::DeleteTagsOutcomeCallable DeleteTagsCallable(const Model::DeleteTagsRequest& request) const;
409 
410         /**
411          * <p>Removes a tag from a resource.</p><p><h3>See Also:</h3>   <a
412          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DeleteTags">AWS API
413          * Reference</a></p>
414          *
415          * Queues the request into a thread executor and triggers associated callback when operation has finished.
416          */
417         virtual void DeleteTagsAsync(const Model::DeleteTagsRequest& request, const DeleteTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
418 
419         /**
420          * <p>Deletes an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
421          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DeleteUser">AWS API
422          * Reference</a></p>
423          */
424         virtual Model::DeleteUserOutcome DeleteUser(const Model::DeleteUserRequest& request) const;
425 
426         /**
427          * <p>Deletes an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
428          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DeleteUser">AWS API
429          * Reference</a></p>
430          *
431          * returns a future to the operation so that it can be executed in parallel to other requests.
432          */
433         virtual Model::DeleteUserOutcomeCallable DeleteUserCallable(const Model::DeleteUserRequest& request) const;
434 
435         /**
436          * <p>Deletes an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
437          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DeleteUser">AWS API
438          * Reference</a></p>
439          *
440          * Queues the request into a thread executor and triggers associated callback when operation has finished.
441          */
442         virtual void DeleteUserAsync(const Model::DeleteUserRequest& request, const DeleteUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
443 
444         /**
445          * <p>Returns information about the specified broker.</p><p><h3>See Also:</h3>   <a
446          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeBroker">AWS
447          * API Reference</a></p>
448          */
449         virtual Model::DescribeBrokerOutcome DescribeBroker(const Model::DescribeBrokerRequest& request) const;
450 
451         /**
452          * <p>Returns information about the specified broker.</p><p><h3>See Also:</h3>   <a
453          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeBroker">AWS
454          * API Reference</a></p>
455          *
456          * returns a future to the operation so that it can be executed in parallel to other requests.
457          */
458         virtual Model::DescribeBrokerOutcomeCallable DescribeBrokerCallable(const Model::DescribeBrokerRequest& request) const;
459 
460         /**
461          * <p>Returns information about the specified broker.</p><p><h3>See Also:</h3>   <a
462          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeBroker">AWS
463          * API Reference</a></p>
464          *
465          * Queues the request into a thread executor and triggers associated callback when operation has finished.
466          */
467         virtual void DescribeBrokerAsync(const Model::DescribeBrokerRequest& request, const DescribeBrokerResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
468 
469         /**
470          * <p>Describe available engine types and versions.</p><p><h3>See Also:</h3>   <a
471          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeBrokerEngineTypes">AWS
472          * API Reference</a></p>
473          */
474         virtual Model::DescribeBrokerEngineTypesOutcome DescribeBrokerEngineTypes(const Model::DescribeBrokerEngineTypesRequest& request) const;
475 
476         /**
477          * <p>Describe available engine types and versions.</p><p><h3>See Also:</h3>   <a
478          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeBrokerEngineTypes">AWS
479          * API Reference</a></p>
480          *
481          * returns a future to the operation so that it can be executed in parallel to other requests.
482          */
483         virtual Model::DescribeBrokerEngineTypesOutcomeCallable DescribeBrokerEngineTypesCallable(const Model::DescribeBrokerEngineTypesRequest& request) const;
484 
485         /**
486          * <p>Describe available engine types and versions.</p><p><h3>See Also:</h3>   <a
487          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeBrokerEngineTypes">AWS
488          * API Reference</a></p>
489          *
490          * Queues the request into a thread executor and triggers associated callback when operation has finished.
491          */
492         virtual void DescribeBrokerEngineTypesAsync(const Model::DescribeBrokerEngineTypesRequest& request, const DescribeBrokerEngineTypesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
493 
494         /**
495          * <p>Describe available broker instance options.</p><p><h3>See Also:</h3>   <a
496          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeBrokerInstanceOptions">AWS
497          * API Reference</a></p>
498          */
499         virtual Model::DescribeBrokerInstanceOptionsOutcome DescribeBrokerInstanceOptions(const Model::DescribeBrokerInstanceOptionsRequest& request) const;
500 
501         /**
502          * <p>Describe available broker instance options.</p><p><h3>See Also:</h3>   <a
503          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeBrokerInstanceOptions">AWS
504          * API Reference</a></p>
505          *
506          * returns a future to the operation so that it can be executed in parallel to other requests.
507          */
508         virtual Model::DescribeBrokerInstanceOptionsOutcomeCallable DescribeBrokerInstanceOptionsCallable(const Model::DescribeBrokerInstanceOptionsRequest& request) const;
509 
510         /**
511          * <p>Describe available broker instance options.</p><p><h3>See Also:</h3>   <a
512          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeBrokerInstanceOptions">AWS
513          * API Reference</a></p>
514          *
515          * Queues the request into a thread executor and triggers associated callback when operation has finished.
516          */
517         virtual void DescribeBrokerInstanceOptionsAsync(const Model::DescribeBrokerInstanceOptionsRequest& request, const DescribeBrokerInstanceOptionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
518 
519         /**
520          * <p>Returns information about the specified configuration.</p><p><h3>See
521          * Also:</h3>   <a
522          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeConfiguration">AWS
523          * API Reference</a></p>
524          */
525         virtual Model::DescribeConfigurationOutcome DescribeConfiguration(const Model::DescribeConfigurationRequest& request) const;
526 
527         /**
528          * <p>Returns information about the specified configuration.</p><p><h3>See
529          * Also:</h3>   <a
530          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeConfiguration">AWS
531          * API Reference</a></p>
532          *
533          * returns a future to the operation so that it can be executed in parallel to other requests.
534          */
535         virtual Model::DescribeConfigurationOutcomeCallable DescribeConfigurationCallable(const Model::DescribeConfigurationRequest& request) const;
536 
537         /**
538          * <p>Returns information about the specified configuration.</p><p><h3>See
539          * Also:</h3>   <a
540          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeConfiguration">AWS
541          * API Reference</a></p>
542          *
543          * Queues the request into a thread executor and triggers associated callback when operation has finished.
544          */
545         virtual void DescribeConfigurationAsync(const Model::DescribeConfigurationRequest& request, const DescribeConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
546 
547         /**
548          * <p>Returns the specified configuration revision for the specified
549          * configuration.</p><p><h3>See Also:</h3>   <a
550          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeConfigurationRevision">AWS
551          * API Reference</a></p>
552          */
553         virtual Model::DescribeConfigurationRevisionOutcome DescribeConfigurationRevision(const Model::DescribeConfigurationRevisionRequest& request) const;
554 
555         /**
556          * <p>Returns the specified configuration revision for the specified
557          * configuration.</p><p><h3>See Also:</h3>   <a
558          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeConfigurationRevision">AWS
559          * API Reference</a></p>
560          *
561          * returns a future to the operation so that it can be executed in parallel to other requests.
562          */
563         virtual Model::DescribeConfigurationRevisionOutcomeCallable DescribeConfigurationRevisionCallable(const Model::DescribeConfigurationRevisionRequest& request) const;
564 
565         /**
566          * <p>Returns the specified configuration revision for the specified
567          * configuration.</p><p><h3>See Also:</h3>   <a
568          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeConfigurationRevision">AWS
569          * API Reference</a></p>
570          *
571          * Queues the request into a thread executor and triggers associated callback when operation has finished.
572          */
573         virtual void DescribeConfigurationRevisionAsync(const Model::DescribeConfigurationRevisionRequest& request, const DescribeConfigurationRevisionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
574 
575         /**
576          * <p>Returns information about an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
577          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeUser">AWS API
578          * Reference</a></p>
579          */
580         virtual Model::DescribeUserOutcome DescribeUser(const Model::DescribeUserRequest& request) const;
581 
582         /**
583          * <p>Returns information about an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
584          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeUser">AWS API
585          * Reference</a></p>
586          *
587          * returns a future to the operation so that it can be executed in parallel to other requests.
588          */
589         virtual Model::DescribeUserOutcomeCallable DescribeUserCallable(const Model::DescribeUserRequest& request) const;
590 
591         /**
592          * <p>Returns information about an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
593          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/DescribeUser">AWS API
594          * Reference</a></p>
595          *
596          * Queues the request into a thread executor and triggers associated callback when operation has finished.
597          */
598         virtual void DescribeUserAsync(const Model::DescribeUserRequest& request, const DescribeUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
599 
600         /**
601          * <p>Returns a list of all brokers.</p><p><h3>See Also:</h3>   <a
602          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListBrokers">AWS API
603          * Reference</a></p>
604          */
605         virtual Model::ListBrokersOutcome ListBrokers(const Model::ListBrokersRequest& request) const;
606 
607         /**
608          * <p>Returns a list of all brokers.</p><p><h3>See Also:</h3>   <a
609          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListBrokers">AWS API
610          * Reference</a></p>
611          *
612          * returns a future to the operation so that it can be executed in parallel to other requests.
613          */
614         virtual Model::ListBrokersOutcomeCallable ListBrokersCallable(const Model::ListBrokersRequest& request) const;
615 
616         /**
617          * <p>Returns a list of all brokers.</p><p><h3>See Also:</h3>   <a
618          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListBrokers">AWS API
619          * Reference</a></p>
620          *
621          * Queues the request into a thread executor and triggers associated callback when operation has finished.
622          */
623         virtual void ListBrokersAsync(const Model::ListBrokersRequest& request, const ListBrokersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
624 
625         /**
626          * <p>Returns a list of all revisions for the specified
627          * configuration.</p><p><h3>See Also:</h3>   <a
628          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListConfigurationRevisions">AWS
629          * API Reference</a></p>
630          */
631         virtual Model::ListConfigurationRevisionsOutcome ListConfigurationRevisions(const Model::ListConfigurationRevisionsRequest& request) const;
632 
633         /**
634          * <p>Returns a list of all revisions for the specified
635          * configuration.</p><p><h3>See Also:</h3>   <a
636          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListConfigurationRevisions">AWS
637          * API Reference</a></p>
638          *
639          * returns a future to the operation so that it can be executed in parallel to other requests.
640          */
641         virtual Model::ListConfigurationRevisionsOutcomeCallable ListConfigurationRevisionsCallable(const Model::ListConfigurationRevisionsRequest& request) const;
642 
643         /**
644          * <p>Returns a list of all revisions for the specified
645          * configuration.</p><p><h3>See Also:</h3>   <a
646          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListConfigurationRevisions">AWS
647          * API Reference</a></p>
648          *
649          * Queues the request into a thread executor and triggers associated callback when operation has finished.
650          */
651         virtual void ListConfigurationRevisionsAsync(const Model::ListConfigurationRevisionsRequest& request, const ListConfigurationRevisionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
652 
653         /**
654          * <p>Returns a list of all configurations.</p><p><h3>See Also:</h3>   <a
655          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListConfigurations">AWS
656          * API Reference</a></p>
657          */
658         virtual Model::ListConfigurationsOutcome ListConfigurations(const Model::ListConfigurationsRequest& request) const;
659 
660         /**
661          * <p>Returns a list of all configurations.</p><p><h3>See Also:</h3>   <a
662          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListConfigurations">AWS
663          * API Reference</a></p>
664          *
665          * returns a future to the operation so that it can be executed in parallel to other requests.
666          */
667         virtual Model::ListConfigurationsOutcomeCallable ListConfigurationsCallable(const Model::ListConfigurationsRequest& request) const;
668 
669         /**
670          * <p>Returns a list of all configurations.</p><p><h3>See Also:</h3>   <a
671          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListConfigurations">AWS
672          * API Reference</a></p>
673          *
674          * Queues the request into a thread executor and triggers associated callback when operation has finished.
675          */
676         virtual void ListConfigurationsAsync(const Model::ListConfigurationsRequest& request, const ListConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
677 
678         /**
679          * <p>Lists tags for a resource.</p><p><h3>See Also:</h3>   <a
680          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListTags">AWS API
681          * Reference</a></p>
682          */
683         virtual Model::ListTagsOutcome ListTags(const Model::ListTagsRequest& request) const;
684 
685         /**
686          * <p>Lists tags for a resource.</p><p><h3>See Also:</h3>   <a
687          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListTags">AWS API
688          * Reference</a></p>
689          *
690          * returns a future to the operation so that it can be executed in parallel to other requests.
691          */
692         virtual Model::ListTagsOutcomeCallable ListTagsCallable(const Model::ListTagsRequest& request) const;
693 
694         /**
695          * <p>Lists tags for a resource.</p><p><h3>See Also:</h3>   <a
696          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListTags">AWS API
697          * Reference</a></p>
698          *
699          * Queues the request into a thread executor and triggers associated callback when operation has finished.
700          */
701         virtual void ListTagsAsync(const Model::ListTagsRequest& request, const ListTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
702 
703         /**
704          * <p>Returns a list of all ActiveMQ users.</p><p><h3>See Also:</h3>   <a
705          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListUsers">AWS API
706          * Reference</a></p>
707          */
708         virtual Model::ListUsersOutcome ListUsers(const Model::ListUsersRequest& request) const;
709 
710         /**
711          * <p>Returns a list of all ActiveMQ users.</p><p><h3>See Also:</h3>   <a
712          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListUsers">AWS API
713          * Reference</a></p>
714          *
715          * returns a future to the operation so that it can be executed in parallel to other requests.
716          */
717         virtual Model::ListUsersOutcomeCallable ListUsersCallable(const Model::ListUsersRequest& request) const;
718 
719         /**
720          * <p>Returns a list of all ActiveMQ users.</p><p><h3>See Also:</h3>   <a
721          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/ListUsers">AWS API
722          * Reference</a></p>
723          *
724          * Queues the request into a thread executor and triggers associated callback when operation has finished.
725          */
726         virtual void ListUsersAsync(const Model::ListUsersRequest& request, const ListUsersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
727 
728         /**
729          * <p>Reboots a broker. Note: This API is asynchronous.</p><p><h3>See Also:</h3>
730          * <a href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/RebootBroker">AWS
731          * API Reference</a></p>
732          */
733         virtual Model::RebootBrokerOutcome RebootBroker(const Model::RebootBrokerRequest& request) const;
734 
735         /**
736          * <p>Reboots a broker. Note: This API is asynchronous.</p><p><h3>See Also:</h3>
737          * <a href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/RebootBroker">AWS
738          * API Reference</a></p>
739          *
740          * returns a future to the operation so that it can be executed in parallel to other requests.
741          */
742         virtual Model::RebootBrokerOutcomeCallable RebootBrokerCallable(const Model::RebootBrokerRequest& request) const;
743 
744         /**
745          * <p>Reboots a broker. Note: This API is asynchronous.</p><p><h3>See Also:</h3>
746          * <a href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/RebootBroker">AWS
747          * API Reference</a></p>
748          *
749          * Queues the request into a thread executor and triggers associated callback when operation has finished.
750          */
751         virtual void RebootBrokerAsync(const Model::RebootBrokerRequest& request, const RebootBrokerResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
752 
753         /**
754          * <p>Adds a pending configuration change to a broker.</p><p><h3>See Also:</h3>
755          * <a href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/UpdateBroker">AWS
756          * API Reference</a></p>
757          */
758         virtual Model::UpdateBrokerOutcome UpdateBroker(const Model::UpdateBrokerRequest& request) const;
759 
760         /**
761          * <p>Adds a pending configuration change to a broker.</p><p><h3>See Also:</h3>
762          * <a href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/UpdateBroker">AWS
763          * API Reference</a></p>
764          *
765          * returns a future to the operation so that it can be executed in parallel to other requests.
766          */
767         virtual Model::UpdateBrokerOutcomeCallable UpdateBrokerCallable(const Model::UpdateBrokerRequest& request) const;
768 
769         /**
770          * <p>Adds a pending configuration change to a broker.</p><p><h3>See Also:</h3>
771          * <a href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/UpdateBroker">AWS
772          * API Reference</a></p>
773          *
774          * Queues the request into a thread executor and triggers associated callback when operation has finished.
775          */
776         virtual void UpdateBrokerAsync(const Model::UpdateBrokerRequest& request, const UpdateBrokerResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
777 
778         /**
779          * <p>Updates the specified configuration.</p><p><h3>See Also:</h3>   <a
780          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/UpdateConfiguration">AWS
781          * API Reference</a></p>
782          */
783         virtual Model::UpdateConfigurationOutcome UpdateConfiguration(const Model::UpdateConfigurationRequest& request) const;
784 
785         /**
786          * <p>Updates the specified configuration.</p><p><h3>See Also:</h3>   <a
787          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/UpdateConfiguration">AWS
788          * API Reference</a></p>
789          *
790          * returns a future to the operation so that it can be executed in parallel to other requests.
791          */
792         virtual Model::UpdateConfigurationOutcomeCallable UpdateConfigurationCallable(const Model::UpdateConfigurationRequest& request) const;
793 
794         /**
795          * <p>Updates the specified configuration.</p><p><h3>See Also:</h3>   <a
796          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/UpdateConfiguration">AWS
797          * API Reference</a></p>
798          *
799          * Queues the request into a thread executor and triggers associated callback when operation has finished.
800          */
801         virtual void UpdateConfigurationAsync(const Model::UpdateConfigurationRequest& request, const UpdateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
802 
803         /**
804          * <p>Updates the information for an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
805          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/UpdateUser">AWS API
806          * Reference</a></p>
807          */
808         virtual Model::UpdateUserOutcome UpdateUser(const Model::UpdateUserRequest& request) const;
809 
810         /**
811          * <p>Updates the information for an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
812          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/UpdateUser">AWS API
813          * Reference</a></p>
814          *
815          * returns a future to the operation so that it can be executed in parallel to other requests.
816          */
817         virtual Model::UpdateUserOutcomeCallable UpdateUserCallable(const Model::UpdateUserRequest& request) const;
818 
819         /**
820          * <p>Updates the information for an ActiveMQ user.</p><p><h3>See Also:</h3>   <a
821          * href="http://docs.aws.amazon.com/goto/WebAPI/mq-2017-11-27/UpdateUser">AWS API
822          * Reference</a></p>
823          *
824          * Queues the request into a thread executor and triggers associated callback when operation has finished.
825          */
826         virtual void UpdateUserAsync(const Model::UpdateUserRequest& request, const UpdateUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
827 
828 
829       void OverrideEndpoint(const Aws::String& endpoint);
830     private:
831       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
832         void CreateBrokerAsyncHelper(const Model::CreateBrokerRequest& request, const CreateBrokerResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
833         void CreateConfigurationAsyncHelper(const Model::CreateConfigurationRequest& request, const CreateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
834         void CreateTagsAsyncHelper(const Model::CreateTagsRequest& request, const CreateTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
835         void CreateUserAsyncHelper(const Model::CreateUserRequest& request, const CreateUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
836         void DeleteBrokerAsyncHelper(const Model::DeleteBrokerRequest& request, const DeleteBrokerResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
837         void DeleteTagsAsyncHelper(const Model::DeleteTagsRequest& request, const DeleteTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
838         void DeleteUserAsyncHelper(const Model::DeleteUserRequest& request, const DeleteUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
839         void DescribeBrokerAsyncHelper(const Model::DescribeBrokerRequest& request, const DescribeBrokerResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
840         void DescribeBrokerEngineTypesAsyncHelper(const Model::DescribeBrokerEngineTypesRequest& request, const DescribeBrokerEngineTypesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
841         void DescribeBrokerInstanceOptionsAsyncHelper(const Model::DescribeBrokerInstanceOptionsRequest& request, const DescribeBrokerInstanceOptionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
842         void DescribeConfigurationAsyncHelper(const Model::DescribeConfigurationRequest& request, const DescribeConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
843         void DescribeConfigurationRevisionAsyncHelper(const Model::DescribeConfigurationRevisionRequest& request, const DescribeConfigurationRevisionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
844         void DescribeUserAsyncHelper(const Model::DescribeUserRequest& request, const DescribeUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
845         void ListBrokersAsyncHelper(const Model::ListBrokersRequest& request, const ListBrokersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
846         void ListConfigurationRevisionsAsyncHelper(const Model::ListConfigurationRevisionsRequest& request, const ListConfigurationRevisionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
847         void ListConfigurationsAsyncHelper(const Model::ListConfigurationsRequest& request, const ListConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
848         void ListTagsAsyncHelper(const Model::ListTagsRequest& request, const ListTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
849         void ListUsersAsyncHelper(const Model::ListUsersRequest& request, const ListUsersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
850         void RebootBrokerAsyncHelper(const Model::RebootBrokerRequest& request, const RebootBrokerResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
851         void UpdateBrokerAsyncHelper(const Model::UpdateBrokerRequest& request, const UpdateBrokerResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
852         void UpdateConfigurationAsyncHelper(const Model::UpdateConfigurationRequest& request, const UpdateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
853         void UpdateUserAsyncHelper(const Model::UpdateUserRequest& request, const UpdateUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
854 
855       Aws::String m_uri;
856       Aws::String m_configScheme;
857       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
858   };
859 
860 } // namespace MQ
861 } // namespace Aws
862