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/cloud9/Cloud9_EXPORTS.h>
8 #include <aws/cloud9/Cloud9Errors.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/cloud9/model/CreateEnvironmentEC2Result.h>
15 #include <aws/cloud9/model/CreateEnvironmentMembershipResult.h>
16 #include <aws/cloud9/model/DeleteEnvironmentResult.h>
17 #include <aws/cloud9/model/DeleteEnvironmentMembershipResult.h>
18 #include <aws/cloud9/model/DescribeEnvironmentMembershipsResult.h>
19 #include <aws/cloud9/model/DescribeEnvironmentStatusResult.h>
20 #include <aws/cloud9/model/DescribeEnvironmentsResult.h>
21 #include <aws/cloud9/model/ListEnvironmentsResult.h>
22 #include <aws/cloud9/model/ListTagsForResourceResult.h>
23 #include <aws/cloud9/model/TagResourceResult.h>
24 #include <aws/cloud9/model/UntagResourceResult.h>
25 #include <aws/cloud9/model/UpdateEnvironmentResult.h>
26 #include <aws/cloud9/model/UpdateEnvironmentMembershipResult.h>
27 #include <aws/core/client/AsyncCallerContext.h>
28 #include <aws/core/http/HttpTypes.h>
29 #include <future>
30 #include <functional>
31 
32 namespace Aws
33 {
34 
35 namespace Http
36 {
37   class HttpClient;
38   class HttpClientFactory;
39 } // namespace Http
40 
41 namespace Utils
42 {
43   template< typename R, typename E> class Outcome;
44 namespace Threading
45 {
46   class Executor;
47 } // namespace Threading
48 } // namespace Utils
49 
50 namespace Auth
51 {
52   class AWSCredentials;
53   class AWSCredentialsProvider;
54 } // namespace Auth
55 
56 namespace Client
57 {
58   class RetryStrategy;
59 } // namespace Client
60 
61 namespace Cloud9
62 {
63 
64 namespace Model
65 {
66         class CreateEnvironmentEC2Request;
67         class CreateEnvironmentMembershipRequest;
68         class DeleteEnvironmentRequest;
69         class DeleteEnvironmentMembershipRequest;
70         class DescribeEnvironmentMembershipsRequest;
71         class DescribeEnvironmentStatusRequest;
72         class DescribeEnvironmentsRequest;
73         class ListEnvironmentsRequest;
74         class ListTagsForResourceRequest;
75         class TagResourceRequest;
76         class UntagResourceRequest;
77         class UpdateEnvironmentRequest;
78         class UpdateEnvironmentMembershipRequest;
79 
80         typedef Aws::Utils::Outcome<CreateEnvironmentEC2Result, Cloud9Error> CreateEnvironmentEC2Outcome;
81         typedef Aws::Utils::Outcome<CreateEnvironmentMembershipResult, Cloud9Error> CreateEnvironmentMembershipOutcome;
82         typedef Aws::Utils::Outcome<DeleteEnvironmentResult, Cloud9Error> DeleteEnvironmentOutcome;
83         typedef Aws::Utils::Outcome<DeleteEnvironmentMembershipResult, Cloud9Error> DeleteEnvironmentMembershipOutcome;
84         typedef Aws::Utils::Outcome<DescribeEnvironmentMembershipsResult, Cloud9Error> DescribeEnvironmentMembershipsOutcome;
85         typedef Aws::Utils::Outcome<DescribeEnvironmentStatusResult, Cloud9Error> DescribeEnvironmentStatusOutcome;
86         typedef Aws::Utils::Outcome<DescribeEnvironmentsResult, Cloud9Error> DescribeEnvironmentsOutcome;
87         typedef Aws::Utils::Outcome<ListEnvironmentsResult, Cloud9Error> ListEnvironmentsOutcome;
88         typedef Aws::Utils::Outcome<ListTagsForResourceResult, Cloud9Error> ListTagsForResourceOutcome;
89         typedef Aws::Utils::Outcome<TagResourceResult, Cloud9Error> TagResourceOutcome;
90         typedef Aws::Utils::Outcome<UntagResourceResult, Cloud9Error> UntagResourceOutcome;
91         typedef Aws::Utils::Outcome<UpdateEnvironmentResult, Cloud9Error> UpdateEnvironmentOutcome;
92         typedef Aws::Utils::Outcome<UpdateEnvironmentMembershipResult, Cloud9Error> UpdateEnvironmentMembershipOutcome;
93 
94         typedef std::future<CreateEnvironmentEC2Outcome> CreateEnvironmentEC2OutcomeCallable;
95         typedef std::future<CreateEnvironmentMembershipOutcome> CreateEnvironmentMembershipOutcomeCallable;
96         typedef std::future<DeleteEnvironmentOutcome> DeleteEnvironmentOutcomeCallable;
97         typedef std::future<DeleteEnvironmentMembershipOutcome> DeleteEnvironmentMembershipOutcomeCallable;
98         typedef std::future<DescribeEnvironmentMembershipsOutcome> DescribeEnvironmentMembershipsOutcomeCallable;
99         typedef std::future<DescribeEnvironmentStatusOutcome> DescribeEnvironmentStatusOutcomeCallable;
100         typedef std::future<DescribeEnvironmentsOutcome> DescribeEnvironmentsOutcomeCallable;
101         typedef std::future<ListEnvironmentsOutcome> ListEnvironmentsOutcomeCallable;
102         typedef std::future<ListTagsForResourceOutcome> ListTagsForResourceOutcomeCallable;
103         typedef std::future<TagResourceOutcome> TagResourceOutcomeCallable;
104         typedef std::future<UntagResourceOutcome> UntagResourceOutcomeCallable;
105         typedef std::future<UpdateEnvironmentOutcome> UpdateEnvironmentOutcomeCallable;
106         typedef std::future<UpdateEnvironmentMembershipOutcome> UpdateEnvironmentMembershipOutcomeCallable;
107 } // namespace Model
108 
109   class Cloud9Client;
110 
111     typedef std::function<void(const Cloud9Client*, const Model::CreateEnvironmentEC2Request&, const Model::CreateEnvironmentEC2Outcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateEnvironmentEC2ResponseReceivedHandler;
112     typedef std::function<void(const Cloud9Client*, const Model::CreateEnvironmentMembershipRequest&, const Model::CreateEnvironmentMembershipOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateEnvironmentMembershipResponseReceivedHandler;
113     typedef std::function<void(const Cloud9Client*, const Model::DeleteEnvironmentRequest&, const Model::DeleteEnvironmentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteEnvironmentResponseReceivedHandler;
114     typedef std::function<void(const Cloud9Client*, const Model::DeleteEnvironmentMembershipRequest&, const Model::DeleteEnvironmentMembershipOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteEnvironmentMembershipResponseReceivedHandler;
115     typedef std::function<void(const Cloud9Client*, const Model::DescribeEnvironmentMembershipsRequest&, const Model::DescribeEnvironmentMembershipsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeEnvironmentMembershipsResponseReceivedHandler;
116     typedef std::function<void(const Cloud9Client*, const Model::DescribeEnvironmentStatusRequest&, const Model::DescribeEnvironmentStatusOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeEnvironmentStatusResponseReceivedHandler;
117     typedef std::function<void(const Cloud9Client*, const Model::DescribeEnvironmentsRequest&, const Model::DescribeEnvironmentsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeEnvironmentsResponseReceivedHandler;
118     typedef std::function<void(const Cloud9Client*, const Model::ListEnvironmentsRequest&, const Model::ListEnvironmentsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListEnvironmentsResponseReceivedHandler;
119     typedef std::function<void(const Cloud9Client*, const Model::ListTagsForResourceRequest&, const Model::ListTagsForResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTagsForResourceResponseReceivedHandler;
120     typedef std::function<void(const Cloud9Client*, const Model::TagResourceRequest&, const Model::TagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > TagResourceResponseReceivedHandler;
121     typedef std::function<void(const Cloud9Client*, const Model::UntagResourceRequest&, const Model::UntagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UntagResourceResponseReceivedHandler;
122     typedef std::function<void(const Cloud9Client*, const Model::UpdateEnvironmentRequest&, const Model::UpdateEnvironmentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateEnvironmentResponseReceivedHandler;
123     typedef std::function<void(const Cloud9Client*, const Model::UpdateEnvironmentMembershipRequest&, const Model::UpdateEnvironmentMembershipOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateEnvironmentMembershipResponseReceivedHandler;
124 
125   /**
126    * <fullname>Cloud9</fullname> <p>Cloud9 is a collection of tools that you can use
127    * to code, build, run, test, debug, and release software in the cloud.</p> <p>For
128    * more information about Cloud9, see the <a
129    * href="https://docs.aws.amazon.com/cloud9/latest/user-guide">Cloud9 User
130    * Guide</a>.</p> <p>Cloud9 supports these operations:</p> <ul> <li> <p>
131    * <code>CreateEnvironmentEC2</code>: Creates an Cloud9 development environment,
132    * launches an Amazon EC2 instance, and then connects from the instance to the
133    * environment.</p> </li> <li> <p> <code>CreateEnvironmentMembership</code>: Adds
134    * an environment member to an environment.</p> </li> <li> <p>
135    * <code>DeleteEnvironment</code>: Deletes an environment. If an Amazon EC2
136    * instance is connected to the environment, also terminates the instance.</p>
137    * </li> <li> <p> <code>DeleteEnvironmentMembership</code>: Deletes an environment
138    * member from an environment.</p> </li> <li> <p>
139    * <code>DescribeEnvironmentMemberships</code>: Gets information about environment
140    * members for an environment.</p> </li> <li> <p>
141    * <code>DescribeEnvironments</code>: Gets information about environments.</p>
142    * </li> <li> <p> <code>DescribeEnvironmentStatus</code>: Gets status information
143    * for an environment.</p> </li> <li> <p> <code>ListEnvironments</code>: Gets a
144    * list of environment identifiers.</p> </li> <li> <p>
145    * <code>ListTagsForResource</code>: Gets the tags for an environment.</p> </li>
146    * <li> <p> <code>TagResource</code>: Adds tags to an environment.</p> </li> <li>
147    * <p> <code>UntagResource</code>: Removes tags from an environment.</p> </li> <li>
148    * <p> <code>UpdateEnvironment</code>: Changes the settings of an existing
149    * environment.</p> </li> <li> <p> <code>UpdateEnvironmentMembership</code>:
150    * Changes the settings of an existing environment member for an environment.</p>
151    * </li> </ul>
152    */
153   class AWS_CLOUD9_API Cloud9Client : public Aws::Client::AWSJsonClient
154   {
155     public:
156       typedef Aws::Client::AWSJsonClient BASECLASS;
157 
158        /**
159         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
160         * is not specified, it will be initialized to default values.
161         */
162         Cloud9Client(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
163 
164        /**
165         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
166         * is not specified, it will be initialized to default values.
167         */
168         Cloud9Client(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
169 
170        /**
171         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
172         * the default http client factory will be used
173         */
174         Cloud9Client(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
175             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
176 
177         virtual ~Cloud9Client();
178 
179 
180         /**
181          * <p>Creates an Cloud9 development environment, launches an Amazon Elastic Compute
182          * Cloud (Amazon EC2) instance, and then connects from the instance to the
183          * environment.</p><p><h3>See Also:</h3>   <a
184          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/CreateEnvironmentEC2">AWS
185          * API Reference</a></p>
186          */
187         virtual Model::CreateEnvironmentEC2Outcome CreateEnvironmentEC2(const Model::CreateEnvironmentEC2Request& request) const;
188 
189         /**
190          * <p>Creates an Cloud9 development environment, launches an Amazon Elastic Compute
191          * Cloud (Amazon EC2) instance, and then connects from the instance to the
192          * environment.</p><p><h3>See Also:</h3>   <a
193          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/CreateEnvironmentEC2">AWS
194          * API Reference</a></p>
195          *
196          * returns a future to the operation so that it can be executed in parallel to other requests.
197          */
198         virtual Model::CreateEnvironmentEC2OutcomeCallable CreateEnvironmentEC2Callable(const Model::CreateEnvironmentEC2Request& request) const;
199 
200         /**
201          * <p>Creates an Cloud9 development environment, launches an Amazon Elastic Compute
202          * Cloud (Amazon EC2) instance, and then connects from the instance to the
203          * environment.</p><p><h3>See Also:</h3>   <a
204          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/CreateEnvironmentEC2">AWS
205          * API Reference</a></p>
206          *
207          * Queues the request into a thread executor and triggers associated callback when operation has finished.
208          */
209         virtual void CreateEnvironmentEC2Async(const Model::CreateEnvironmentEC2Request& request, const CreateEnvironmentEC2ResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
210 
211         /**
212          * <p>Adds an environment member to an Cloud9 development
213          * environment.</p><p><h3>See Also:</h3>   <a
214          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/CreateEnvironmentMembership">AWS
215          * API Reference</a></p>
216          */
217         virtual Model::CreateEnvironmentMembershipOutcome CreateEnvironmentMembership(const Model::CreateEnvironmentMembershipRequest& request) const;
218 
219         /**
220          * <p>Adds an environment member to an Cloud9 development
221          * environment.</p><p><h3>See Also:</h3>   <a
222          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/CreateEnvironmentMembership">AWS
223          * API Reference</a></p>
224          *
225          * returns a future to the operation so that it can be executed in parallel to other requests.
226          */
227         virtual Model::CreateEnvironmentMembershipOutcomeCallable CreateEnvironmentMembershipCallable(const Model::CreateEnvironmentMembershipRequest& request) const;
228 
229         /**
230          * <p>Adds an environment member to an Cloud9 development
231          * environment.</p><p><h3>See Also:</h3>   <a
232          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/CreateEnvironmentMembership">AWS
233          * API Reference</a></p>
234          *
235          * Queues the request into a thread executor and triggers associated callback when operation has finished.
236          */
237         virtual void CreateEnvironmentMembershipAsync(const Model::CreateEnvironmentMembershipRequest& request, const CreateEnvironmentMembershipResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
238 
239         /**
240          * <p>Deletes an Cloud9 development environment. If an Amazon EC2 instance is
241          * connected to the environment, also terminates the instance.</p><p><h3>See
242          * Also:</h3>   <a
243          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DeleteEnvironment">AWS
244          * API Reference</a></p>
245          */
246         virtual Model::DeleteEnvironmentOutcome DeleteEnvironment(const Model::DeleteEnvironmentRequest& request) const;
247 
248         /**
249          * <p>Deletes an Cloud9 development environment. If an Amazon EC2 instance is
250          * connected to the environment, also terminates the instance.</p><p><h3>See
251          * Also:</h3>   <a
252          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DeleteEnvironment">AWS
253          * API 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::DeleteEnvironmentOutcomeCallable DeleteEnvironmentCallable(const Model::DeleteEnvironmentRequest& request) const;
258 
259         /**
260          * <p>Deletes an Cloud9 development environment. If an Amazon EC2 instance is
261          * connected to the environment, also terminates the instance.</p><p><h3>See
262          * Also:</h3>   <a
263          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DeleteEnvironment">AWS
264          * API Reference</a></p>
265          *
266          * Queues the request into a thread executor and triggers associated callback when operation has finished.
267          */
268         virtual void DeleteEnvironmentAsync(const Model::DeleteEnvironmentRequest& request, const DeleteEnvironmentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
269 
270         /**
271          * <p>Deletes an environment member from an Cloud9 development
272          * environment.</p><p><h3>See Also:</h3>   <a
273          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DeleteEnvironmentMembership">AWS
274          * API Reference</a></p>
275          */
276         virtual Model::DeleteEnvironmentMembershipOutcome DeleteEnvironmentMembership(const Model::DeleteEnvironmentMembershipRequest& request) const;
277 
278         /**
279          * <p>Deletes an environment member from an Cloud9 development
280          * environment.</p><p><h3>See Also:</h3>   <a
281          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DeleteEnvironmentMembership">AWS
282          * API Reference</a></p>
283          *
284          * returns a future to the operation so that it can be executed in parallel to other requests.
285          */
286         virtual Model::DeleteEnvironmentMembershipOutcomeCallable DeleteEnvironmentMembershipCallable(const Model::DeleteEnvironmentMembershipRequest& request) const;
287 
288         /**
289          * <p>Deletes an environment member from an Cloud9 development
290          * environment.</p><p><h3>See Also:</h3>   <a
291          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DeleteEnvironmentMembership">AWS
292          * API Reference</a></p>
293          *
294          * Queues the request into a thread executor and triggers associated callback when operation has finished.
295          */
296         virtual void DeleteEnvironmentMembershipAsync(const Model::DeleteEnvironmentMembershipRequest& request, const DeleteEnvironmentMembershipResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
297 
298         /**
299          * <p>Gets information about environment members for an Cloud9 development
300          * environment.</p><p><h3>See Also:</h3>   <a
301          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DescribeEnvironmentMemberships">AWS
302          * API Reference</a></p>
303          */
304         virtual Model::DescribeEnvironmentMembershipsOutcome DescribeEnvironmentMemberships(const Model::DescribeEnvironmentMembershipsRequest& request) const;
305 
306         /**
307          * <p>Gets information about environment members for an Cloud9 development
308          * environment.</p><p><h3>See Also:</h3>   <a
309          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DescribeEnvironmentMemberships">AWS
310          * API Reference</a></p>
311          *
312          * returns a future to the operation so that it can be executed in parallel to other requests.
313          */
314         virtual Model::DescribeEnvironmentMembershipsOutcomeCallable DescribeEnvironmentMembershipsCallable(const Model::DescribeEnvironmentMembershipsRequest& request) const;
315 
316         /**
317          * <p>Gets information about environment members for an Cloud9 development
318          * environment.</p><p><h3>See Also:</h3>   <a
319          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DescribeEnvironmentMemberships">AWS
320          * API Reference</a></p>
321          *
322          * Queues the request into a thread executor and triggers associated callback when operation has finished.
323          */
324         virtual void DescribeEnvironmentMembershipsAsync(const Model::DescribeEnvironmentMembershipsRequest& request, const DescribeEnvironmentMembershipsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
325 
326         /**
327          * <p>Gets status information for an Cloud9 development environment.</p><p><h3>See
328          * Also:</h3>   <a
329          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DescribeEnvironmentStatus">AWS
330          * API Reference</a></p>
331          */
332         virtual Model::DescribeEnvironmentStatusOutcome DescribeEnvironmentStatus(const Model::DescribeEnvironmentStatusRequest& request) const;
333 
334         /**
335          * <p>Gets status information for an Cloud9 development environment.</p><p><h3>See
336          * Also:</h3>   <a
337          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DescribeEnvironmentStatus">AWS
338          * API Reference</a></p>
339          *
340          * returns a future to the operation so that it can be executed in parallel to other requests.
341          */
342         virtual Model::DescribeEnvironmentStatusOutcomeCallable DescribeEnvironmentStatusCallable(const Model::DescribeEnvironmentStatusRequest& request) const;
343 
344         /**
345          * <p>Gets status information for an Cloud9 development environment.</p><p><h3>See
346          * Also:</h3>   <a
347          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DescribeEnvironmentStatus">AWS
348          * API Reference</a></p>
349          *
350          * Queues the request into a thread executor and triggers associated callback when operation has finished.
351          */
352         virtual void DescribeEnvironmentStatusAsync(const Model::DescribeEnvironmentStatusRequest& request, const DescribeEnvironmentStatusResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
353 
354         /**
355          * <p>Gets information about Cloud9 development environments.</p><p><h3>See
356          * Also:</h3>   <a
357          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DescribeEnvironments">AWS
358          * API Reference</a></p>
359          */
360         virtual Model::DescribeEnvironmentsOutcome DescribeEnvironments(const Model::DescribeEnvironmentsRequest& request) const;
361 
362         /**
363          * <p>Gets information about Cloud9 development environments.</p><p><h3>See
364          * Also:</h3>   <a
365          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DescribeEnvironments">AWS
366          * API Reference</a></p>
367          *
368          * returns a future to the operation so that it can be executed in parallel to other requests.
369          */
370         virtual Model::DescribeEnvironmentsOutcomeCallable DescribeEnvironmentsCallable(const Model::DescribeEnvironmentsRequest& request) const;
371 
372         /**
373          * <p>Gets information about Cloud9 development environments.</p><p><h3>See
374          * Also:</h3>   <a
375          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DescribeEnvironments">AWS
376          * API Reference</a></p>
377          *
378          * Queues the request into a thread executor and triggers associated callback when operation has finished.
379          */
380         virtual void DescribeEnvironmentsAsync(const Model::DescribeEnvironmentsRequest& request, const DescribeEnvironmentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
381 
382         /**
383          * <p>Gets a list of Cloud9 development environment identifiers.</p><p><h3>See
384          * Also:</h3>   <a
385          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/ListEnvironments">AWS
386          * API Reference</a></p>
387          */
388         virtual Model::ListEnvironmentsOutcome ListEnvironments(const Model::ListEnvironmentsRequest& request) const;
389 
390         /**
391          * <p>Gets a list of Cloud9 development environment identifiers.</p><p><h3>See
392          * Also:</h3>   <a
393          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/ListEnvironments">AWS
394          * API Reference</a></p>
395          *
396          * returns a future to the operation so that it can be executed in parallel to other requests.
397          */
398         virtual Model::ListEnvironmentsOutcomeCallable ListEnvironmentsCallable(const Model::ListEnvironmentsRequest& request) const;
399 
400         /**
401          * <p>Gets a list of Cloud9 development environment identifiers.</p><p><h3>See
402          * Also:</h3>   <a
403          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/ListEnvironments">AWS
404          * API Reference</a></p>
405          *
406          * Queues the request into a thread executor and triggers associated callback when operation has finished.
407          */
408         virtual void ListEnvironmentsAsync(const Model::ListEnvironmentsRequest& request, const ListEnvironmentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
409 
410         /**
411          * <p>Gets a list of the tags associated with an Cloud9 development
412          * environment.</p><p><h3>See Also:</h3>   <a
413          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/ListTagsForResource">AWS
414          * API Reference</a></p>
415          */
416         virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const;
417 
418         /**
419          * <p>Gets a list of the tags associated with an Cloud9 development
420          * environment.</p><p><h3>See Also:</h3>   <a
421          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/ListTagsForResource">AWS
422          * API Reference</a></p>
423          *
424          * returns a future to the operation so that it can be executed in parallel to other requests.
425          */
426         virtual Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const Model::ListTagsForResourceRequest& request) const;
427 
428         /**
429          * <p>Gets a list of the tags associated with an Cloud9 development
430          * environment.</p><p><h3>See Also:</h3>   <a
431          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/ListTagsForResource">AWS
432          * API Reference</a></p>
433          *
434          * Queues the request into a thread executor and triggers associated callback when operation has finished.
435          */
436         virtual void ListTagsForResourceAsync(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
437 
438         /**
439          * <p>Adds tags to an Cloud9 development environment.</p>  <p>Tags that
440          * you add to an Cloud9 environment by using this method will NOT be automatically
441          * propagated to underlying resources.</p> <p><h3>See Also:</h3>   <a
442          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/TagResource">AWS
443          * API Reference</a></p>
444          */
445         virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const;
446 
447         /**
448          * <p>Adds tags to an Cloud9 development environment.</p>  <p>Tags that
449          * you add to an Cloud9 environment by using this method will NOT be automatically
450          * propagated to underlying resources.</p> <p><h3>See Also:</h3>   <a
451          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/TagResource">AWS
452          * API Reference</a></p>
453          *
454          * returns a future to the operation so that it can be executed in parallel to other requests.
455          */
456         virtual Model::TagResourceOutcomeCallable TagResourceCallable(const Model::TagResourceRequest& request) const;
457 
458         /**
459          * <p>Adds tags to an Cloud9 development environment.</p>  <p>Tags that
460          * you add to an Cloud9 environment by using this method will NOT be automatically
461          * propagated to underlying resources.</p> <p><h3>See Also:</h3>   <a
462          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/TagResource">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 TagResourceAsync(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
468 
469         /**
470          * <p>Removes tags from an Cloud9 development environment.</p><p><h3>See Also:</h3>
471          * <a
472          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/UntagResource">AWS
473          * API Reference</a></p>
474          */
475         virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const;
476 
477         /**
478          * <p>Removes tags from an Cloud9 development environment.</p><p><h3>See Also:</h3>
479          * <a
480          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/UntagResource">AWS
481          * API Reference</a></p>
482          *
483          * returns a future to the operation so that it can be executed in parallel to other requests.
484          */
485         virtual Model::UntagResourceOutcomeCallable UntagResourceCallable(const Model::UntagResourceRequest& request) const;
486 
487         /**
488          * <p>Removes tags from an Cloud9 development environment.</p><p><h3>See Also:</h3>
489          * <a
490          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/UntagResource">AWS
491          * API Reference</a></p>
492          *
493          * Queues the request into a thread executor and triggers associated callback when operation has finished.
494          */
495         virtual void UntagResourceAsync(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
496 
497         /**
498          * <p>Changes the settings of an existing Cloud9 development
499          * environment.</p><p><h3>See Also:</h3>   <a
500          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/UpdateEnvironment">AWS
501          * API Reference</a></p>
502          */
503         virtual Model::UpdateEnvironmentOutcome UpdateEnvironment(const Model::UpdateEnvironmentRequest& request) const;
504 
505         /**
506          * <p>Changes the settings of an existing Cloud9 development
507          * environment.</p><p><h3>See Also:</h3>   <a
508          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/UpdateEnvironment">AWS
509          * API Reference</a></p>
510          *
511          * returns a future to the operation so that it can be executed in parallel to other requests.
512          */
513         virtual Model::UpdateEnvironmentOutcomeCallable UpdateEnvironmentCallable(const Model::UpdateEnvironmentRequest& request) const;
514 
515         /**
516          * <p>Changes the settings of an existing Cloud9 development
517          * environment.</p><p><h3>See Also:</h3>   <a
518          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/UpdateEnvironment">AWS
519          * API Reference</a></p>
520          *
521          * Queues the request into a thread executor and triggers associated callback when operation has finished.
522          */
523         virtual void UpdateEnvironmentAsync(const Model::UpdateEnvironmentRequest& request, const UpdateEnvironmentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
524 
525         /**
526          * <p>Changes the settings of an existing environment member for an Cloud9
527          * development environment.</p><p><h3>See Also:</h3>   <a
528          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/UpdateEnvironmentMembership">AWS
529          * API Reference</a></p>
530          */
531         virtual Model::UpdateEnvironmentMembershipOutcome UpdateEnvironmentMembership(const Model::UpdateEnvironmentMembershipRequest& request) const;
532 
533         /**
534          * <p>Changes the settings of an existing environment member for an Cloud9
535          * development environment.</p><p><h3>See Also:</h3>   <a
536          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/UpdateEnvironmentMembership">AWS
537          * API Reference</a></p>
538          *
539          * returns a future to the operation so that it can be executed in parallel to other requests.
540          */
541         virtual Model::UpdateEnvironmentMembershipOutcomeCallable UpdateEnvironmentMembershipCallable(const Model::UpdateEnvironmentMembershipRequest& request) const;
542 
543         /**
544          * <p>Changes the settings of an existing environment member for an Cloud9
545          * development environment.</p><p><h3>See Also:</h3>   <a
546          * href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/UpdateEnvironmentMembership">AWS
547          * API Reference</a></p>
548          *
549          * Queues the request into a thread executor and triggers associated callback when operation has finished.
550          */
551         virtual void UpdateEnvironmentMembershipAsync(const Model::UpdateEnvironmentMembershipRequest& request, const UpdateEnvironmentMembershipResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
552 
553 
554       void OverrideEndpoint(const Aws::String& endpoint);
555     private:
556       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
557         void CreateEnvironmentEC2AsyncHelper(const Model::CreateEnvironmentEC2Request& request, const CreateEnvironmentEC2ResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
558         void CreateEnvironmentMembershipAsyncHelper(const Model::CreateEnvironmentMembershipRequest& request, const CreateEnvironmentMembershipResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
559         void DeleteEnvironmentAsyncHelper(const Model::DeleteEnvironmentRequest& request, const DeleteEnvironmentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
560         void DeleteEnvironmentMembershipAsyncHelper(const Model::DeleteEnvironmentMembershipRequest& request, const DeleteEnvironmentMembershipResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
561         void DescribeEnvironmentMembershipsAsyncHelper(const Model::DescribeEnvironmentMembershipsRequest& request, const DescribeEnvironmentMembershipsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
562         void DescribeEnvironmentStatusAsyncHelper(const Model::DescribeEnvironmentStatusRequest& request, const DescribeEnvironmentStatusResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
563         void DescribeEnvironmentsAsyncHelper(const Model::DescribeEnvironmentsRequest& request, const DescribeEnvironmentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
564         void ListEnvironmentsAsyncHelper(const Model::ListEnvironmentsRequest& request, const ListEnvironmentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
565         void ListTagsForResourceAsyncHelper(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
566         void TagResourceAsyncHelper(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
567         void UntagResourceAsyncHelper(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
568         void UpdateEnvironmentAsyncHelper(const Model::UpdateEnvironmentRequest& request, const UpdateEnvironmentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
569         void UpdateEnvironmentMembershipAsyncHelper(const Model::UpdateEnvironmentMembershipRequest& request, const UpdateEnvironmentMembershipResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
570 
571       Aws::String m_uri;
572       Aws::String m_configScheme;
573       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
574   };
575 
576 } // namespace Cloud9
577 } // namespace Aws
578