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/snow-device-management/SnowDeviceManagement_EXPORTS.h>
8 #include <aws/snow-device-management/SnowDeviceManagementErrors.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/snow-device-management/model/CancelTaskResult.h>
15 #include <aws/snow-device-management/model/CreateTaskResult.h>
16 #include <aws/snow-device-management/model/DescribeDeviceResult.h>
17 #include <aws/snow-device-management/model/DescribeDeviceEc2InstancesResult.h>
18 #include <aws/snow-device-management/model/DescribeExecutionResult.h>
19 #include <aws/snow-device-management/model/DescribeTaskResult.h>
20 #include <aws/snow-device-management/model/ListDeviceResourcesResult.h>
21 #include <aws/snow-device-management/model/ListDevicesResult.h>
22 #include <aws/snow-device-management/model/ListExecutionsResult.h>
23 #include <aws/snow-device-management/model/ListTagsForResourceResult.h>
24 #include <aws/snow-device-management/model/ListTasksResult.h>
25 #include <aws/core/NoResult.h>
26 #include <aws/core/client/AsyncCallerContext.h>
27 #include <aws/core/http/HttpTypes.h>
28 #include <future>
29 #include <functional>
30 
31 namespace Aws
32 {
33 
34 namespace Http
35 {
36   class HttpClient;
37   class HttpClientFactory;
38 } // namespace Http
39 
40 namespace Utils
41 {
42   template< typename R, typename E> class Outcome;
43 namespace Threading
44 {
45   class Executor;
46 } // namespace Threading
47 } // namespace Utils
48 
49 namespace Auth
50 {
51   class AWSCredentials;
52   class AWSCredentialsProvider;
53 } // namespace Auth
54 
55 namespace Client
56 {
57   class RetryStrategy;
58 } // namespace Client
59 
60 namespace SnowDeviceManagement
61 {
62 
63 namespace Model
64 {
65         class CancelTaskRequest;
66         class CreateTaskRequest;
67         class DescribeDeviceRequest;
68         class DescribeDeviceEc2InstancesRequest;
69         class DescribeExecutionRequest;
70         class DescribeTaskRequest;
71         class ListDeviceResourcesRequest;
72         class ListDevicesRequest;
73         class ListExecutionsRequest;
74         class ListTagsForResourceRequest;
75         class ListTasksRequest;
76         class TagResourceRequest;
77         class UntagResourceRequest;
78 
79         typedef Aws::Utils::Outcome<CancelTaskResult, SnowDeviceManagementError> CancelTaskOutcome;
80         typedef Aws::Utils::Outcome<CreateTaskResult, SnowDeviceManagementError> CreateTaskOutcome;
81         typedef Aws::Utils::Outcome<DescribeDeviceResult, SnowDeviceManagementError> DescribeDeviceOutcome;
82         typedef Aws::Utils::Outcome<DescribeDeviceEc2InstancesResult, SnowDeviceManagementError> DescribeDeviceEc2InstancesOutcome;
83         typedef Aws::Utils::Outcome<DescribeExecutionResult, SnowDeviceManagementError> DescribeExecutionOutcome;
84         typedef Aws::Utils::Outcome<DescribeTaskResult, SnowDeviceManagementError> DescribeTaskOutcome;
85         typedef Aws::Utils::Outcome<ListDeviceResourcesResult, SnowDeviceManagementError> ListDeviceResourcesOutcome;
86         typedef Aws::Utils::Outcome<ListDevicesResult, SnowDeviceManagementError> ListDevicesOutcome;
87         typedef Aws::Utils::Outcome<ListExecutionsResult, SnowDeviceManagementError> ListExecutionsOutcome;
88         typedef Aws::Utils::Outcome<ListTagsForResourceResult, SnowDeviceManagementError> ListTagsForResourceOutcome;
89         typedef Aws::Utils::Outcome<ListTasksResult, SnowDeviceManagementError> ListTasksOutcome;
90         typedef Aws::Utils::Outcome<Aws::NoResult, SnowDeviceManagementError> TagResourceOutcome;
91         typedef Aws::Utils::Outcome<Aws::NoResult, SnowDeviceManagementError> UntagResourceOutcome;
92 
93         typedef std::future<CancelTaskOutcome> CancelTaskOutcomeCallable;
94         typedef std::future<CreateTaskOutcome> CreateTaskOutcomeCallable;
95         typedef std::future<DescribeDeviceOutcome> DescribeDeviceOutcomeCallable;
96         typedef std::future<DescribeDeviceEc2InstancesOutcome> DescribeDeviceEc2InstancesOutcomeCallable;
97         typedef std::future<DescribeExecutionOutcome> DescribeExecutionOutcomeCallable;
98         typedef std::future<DescribeTaskOutcome> DescribeTaskOutcomeCallable;
99         typedef std::future<ListDeviceResourcesOutcome> ListDeviceResourcesOutcomeCallable;
100         typedef std::future<ListDevicesOutcome> ListDevicesOutcomeCallable;
101         typedef std::future<ListExecutionsOutcome> ListExecutionsOutcomeCallable;
102         typedef std::future<ListTagsForResourceOutcome> ListTagsForResourceOutcomeCallable;
103         typedef std::future<ListTasksOutcome> ListTasksOutcomeCallable;
104         typedef std::future<TagResourceOutcome> TagResourceOutcomeCallable;
105         typedef std::future<UntagResourceOutcome> UntagResourceOutcomeCallable;
106 } // namespace Model
107 
108   class SnowDeviceManagementClient;
109 
110     typedef std::function<void(const SnowDeviceManagementClient*, const Model::CancelTaskRequest&, const Model::CancelTaskOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CancelTaskResponseReceivedHandler;
111     typedef std::function<void(const SnowDeviceManagementClient*, const Model::CreateTaskRequest&, const Model::CreateTaskOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateTaskResponseReceivedHandler;
112     typedef std::function<void(const SnowDeviceManagementClient*, const Model::DescribeDeviceRequest&, const Model::DescribeDeviceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeDeviceResponseReceivedHandler;
113     typedef std::function<void(const SnowDeviceManagementClient*, const Model::DescribeDeviceEc2InstancesRequest&, const Model::DescribeDeviceEc2InstancesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeDeviceEc2InstancesResponseReceivedHandler;
114     typedef std::function<void(const SnowDeviceManagementClient*, const Model::DescribeExecutionRequest&, const Model::DescribeExecutionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeExecutionResponseReceivedHandler;
115     typedef std::function<void(const SnowDeviceManagementClient*, const Model::DescribeTaskRequest&, const Model::DescribeTaskOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeTaskResponseReceivedHandler;
116     typedef std::function<void(const SnowDeviceManagementClient*, const Model::ListDeviceResourcesRequest&, const Model::ListDeviceResourcesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListDeviceResourcesResponseReceivedHandler;
117     typedef std::function<void(const SnowDeviceManagementClient*, const Model::ListDevicesRequest&, const Model::ListDevicesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListDevicesResponseReceivedHandler;
118     typedef std::function<void(const SnowDeviceManagementClient*, const Model::ListExecutionsRequest&, const Model::ListExecutionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListExecutionsResponseReceivedHandler;
119     typedef std::function<void(const SnowDeviceManagementClient*, const Model::ListTagsForResourceRequest&, const Model::ListTagsForResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTagsForResourceResponseReceivedHandler;
120     typedef std::function<void(const SnowDeviceManagementClient*, const Model::ListTasksRequest&, const Model::ListTasksOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTasksResponseReceivedHandler;
121     typedef std::function<void(const SnowDeviceManagementClient*, const Model::TagResourceRequest&, const Model::TagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > TagResourceResponseReceivedHandler;
122     typedef std::function<void(const SnowDeviceManagementClient*, const Model::UntagResourceRequest&, const Model::UntagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UntagResourceResponseReceivedHandler;
123 
124   /**
125    * <p>Amazon Web Services Snow Device Management documentation.</p>
126    */
127   class AWS_SNOWDEVICEMANAGEMENT_API SnowDeviceManagementClient : public Aws::Client::AWSJsonClient
128   {
129     public:
130       typedef Aws::Client::AWSJsonClient BASECLASS;
131 
132        /**
133         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
134         * is not specified, it will be initialized to default values.
135         */
136         SnowDeviceManagementClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
137 
138        /**
139         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
140         * is not specified, it will be initialized to default values.
141         */
142         SnowDeviceManagementClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
143 
144        /**
145         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
146         * the default http client factory will be used
147         */
148         SnowDeviceManagementClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
149             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
150 
151         virtual ~SnowDeviceManagementClient();
152 
153 
154         /**
155          * <p>Sends a cancel request for a specified task. You can cancel a task only if
156          * it's still in a <code>QUEUED</code> state. Tasks that are already running can't
157          * be cancelled.</p>  <p>A task might still run if it's processed from the
158          * queue before the <code>CancelTask</code> operation changes the task's state.</p>
159          * <p><h3>See Also:</h3>   <a
160          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/CancelTask">AWS
161          * API Reference</a></p>
162          */
163         virtual Model::CancelTaskOutcome CancelTask(const Model::CancelTaskRequest& request) const;
164 
165         /**
166          * <p>Sends a cancel request for a specified task. You can cancel a task only if
167          * it's still in a <code>QUEUED</code> state. Tasks that are already running can't
168          * be cancelled.</p>  <p>A task might still run if it's processed from the
169          * queue before the <code>CancelTask</code> operation changes the task's state.</p>
170          * <p><h3>See Also:</h3>   <a
171          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/CancelTask">AWS
172          * API Reference</a></p>
173          *
174          * returns a future to the operation so that it can be executed in parallel to other requests.
175          */
176         virtual Model::CancelTaskOutcomeCallable CancelTaskCallable(const Model::CancelTaskRequest& request) const;
177 
178         /**
179          * <p>Sends a cancel request for a specified task. You can cancel a task only if
180          * it's still in a <code>QUEUED</code> state. Tasks that are already running can't
181          * be cancelled.</p>  <p>A task might still run if it's processed from the
182          * queue before the <code>CancelTask</code> operation changes the task's state.</p>
183          * <p><h3>See Also:</h3>   <a
184          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/CancelTask">AWS
185          * API Reference</a></p>
186          *
187          * Queues the request into a thread executor and triggers associated callback when operation has finished.
188          */
189         virtual void CancelTaskAsync(const Model::CancelTaskRequest& request, const CancelTaskResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
190 
191         /**
192          * <p>Instructs one or more devices to start a task, such as unlocking or
193          * rebooting.</p><p><h3>See Also:</h3>   <a
194          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/CreateTask">AWS
195          * API Reference</a></p>
196          */
197         virtual Model::CreateTaskOutcome CreateTask(const Model::CreateTaskRequest& request) const;
198 
199         /**
200          * <p>Instructs one or more devices to start a task, such as unlocking or
201          * rebooting.</p><p><h3>See Also:</h3>   <a
202          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/CreateTask">AWS
203          * API Reference</a></p>
204          *
205          * returns a future to the operation so that it can be executed in parallel to other requests.
206          */
207         virtual Model::CreateTaskOutcomeCallable CreateTaskCallable(const Model::CreateTaskRequest& request) const;
208 
209         /**
210          * <p>Instructs one or more devices to start a task, such as unlocking or
211          * rebooting.</p><p><h3>See Also:</h3>   <a
212          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/CreateTask">AWS
213          * API Reference</a></p>
214          *
215          * Queues the request into a thread executor and triggers associated callback when operation has finished.
216          */
217         virtual void CreateTaskAsync(const Model::CreateTaskRequest& request, const CreateTaskResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
218 
219         /**
220          * <p>Checks device-specific information, such as the device type, software
221          * version, IP addresses, and lock status.</p><p><h3>See Also:</h3>   <a
222          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeDevice">AWS
223          * API Reference</a></p>
224          */
225         virtual Model::DescribeDeviceOutcome DescribeDevice(const Model::DescribeDeviceRequest& request) const;
226 
227         /**
228          * <p>Checks device-specific information, such as the device type, software
229          * version, IP addresses, and lock status.</p><p><h3>See Also:</h3>   <a
230          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeDevice">AWS
231          * API Reference</a></p>
232          *
233          * returns a future to the operation so that it can be executed in parallel to other requests.
234          */
235         virtual Model::DescribeDeviceOutcomeCallable DescribeDeviceCallable(const Model::DescribeDeviceRequest& request) const;
236 
237         /**
238          * <p>Checks device-specific information, such as the device type, software
239          * version, IP addresses, and lock status.</p><p><h3>See Also:</h3>   <a
240          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeDevice">AWS
241          * API Reference</a></p>
242          *
243          * Queues the request into a thread executor and triggers associated callback when operation has finished.
244          */
245         virtual void DescribeDeviceAsync(const Model::DescribeDeviceRequest& request, const DescribeDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
246 
247         /**
248          * <p>Checks the current state of the Amazon EC2 instances. The output is similar
249          * to <code>describeDevice</code>, but the results are sourced from the device
250          * cache in the Amazon Web Services Cloud and include a subset of the available
251          * fields. </p><p><h3>See Also:</h3>   <a
252          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeDeviceEc2Instances">AWS
253          * API Reference</a></p>
254          */
255         virtual Model::DescribeDeviceEc2InstancesOutcome DescribeDeviceEc2Instances(const Model::DescribeDeviceEc2InstancesRequest& request) const;
256 
257         /**
258          * <p>Checks the current state of the Amazon EC2 instances. The output is similar
259          * to <code>describeDevice</code>, but the results are sourced from the device
260          * cache in the Amazon Web Services Cloud and include a subset of the available
261          * fields. </p><p><h3>See Also:</h3>   <a
262          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeDeviceEc2Instances">AWS
263          * API Reference</a></p>
264          *
265          * returns a future to the operation so that it can be executed in parallel to other requests.
266          */
267         virtual Model::DescribeDeviceEc2InstancesOutcomeCallable DescribeDeviceEc2InstancesCallable(const Model::DescribeDeviceEc2InstancesRequest& request) const;
268 
269         /**
270          * <p>Checks the current state of the Amazon EC2 instances. The output is similar
271          * to <code>describeDevice</code>, but the results are sourced from the device
272          * cache in the Amazon Web Services Cloud and include a subset of the available
273          * fields. </p><p><h3>See Also:</h3>   <a
274          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeDeviceEc2Instances">AWS
275          * API Reference</a></p>
276          *
277          * Queues the request into a thread executor and triggers associated callback when operation has finished.
278          */
279         virtual void DescribeDeviceEc2InstancesAsync(const Model::DescribeDeviceEc2InstancesRequest& request, const DescribeDeviceEc2InstancesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
280 
281         /**
282          * <p>Checks the status of a remote task running on one or more target
283          * devices.</p><p><h3>See Also:</h3>   <a
284          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeExecution">AWS
285          * API Reference</a></p>
286          */
287         virtual Model::DescribeExecutionOutcome DescribeExecution(const Model::DescribeExecutionRequest& request) const;
288 
289         /**
290          * <p>Checks the status of a remote task running on one or more target
291          * devices.</p><p><h3>See Also:</h3>   <a
292          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeExecution">AWS
293          * API Reference</a></p>
294          *
295          * returns a future to the operation so that it can be executed in parallel to other requests.
296          */
297         virtual Model::DescribeExecutionOutcomeCallable DescribeExecutionCallable(const Model::DescribeExecutionRequest& request) const;
298 
299         /**
300          * <p>Checks the status of a remote task running on one or more target
301          * devices.</p><p><h3>See Also:</h3>   <a
302          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeExecution">AWS
303          * API Reference</a></p>
304          *
305          * Queues the request into a thread executor and triggers associated callback when operation has finished.
306          */
307         virtual void DescribeExecutionAsync(const Model::DescribeExecutionRequest& request, const DescribeExecutionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
308 
309         /**
310          * <p>Checks the metadata for a given task on a device. </p><p><h3>See Also:</h3>
311          * <a
312          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeTask">AWS
313          * API Reference</a></p>
314          */
315         virtual Model::DescribeTaskOutcome DescribeTask(const Model::DescribeTaskRequest& request) const;
316 
317         /**
318          * <p>Checks the metadata for a given task on a device. </p><p><h3>See Also:</h3>
319          * <a
320          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeTask">AWS
321          * API Reference</a></p>
322          *
323          * returns a future to the operation so that it can be executed in parallel to other requests.
324          */
325         virtual Model::DescribeTaskOutcomeCallable DescribeTaskCallable(const Model::DescribeTaskRequest& request) const;
326 
327         /**
328          * <p>Checks the metadata for a given task on a device. </p><p><h3>See Also:</h3>
329          * <a
330          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/DescribeTask">AWS
331          * API Reference</a></p>
332          *
333          * Queues the request into a thread executor and triggers associated callback when operation has finished.
334          */
335         virtual void DescribeTaskAsync(const Model::DescribeTaskRequest& request, const DescribeTaskResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
336 
337         /**
338          * <p>Returns a list of the Amazon Web Services resources available for a device.
339          * Currently, Amazon EC2 instances are the only supported resource
340          * type.</p><p><h3>See Also:</h3>   <a
341          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListDeviceResources">AWS
342          * API Reference</a></p>
343          */
344         virtual Model::ListDeviceResourcesOutcome ListDeviceResources(const Model::ListDeviceResourcesRequest& request) const;
345 
346         /**
347          * <p>Returns a list of the Amazon Web Services resources available for a device.
348          * Currently, Amazon EC2 instances are the only supported resource
349          * type.</p><p><h3>See Also:</h3>   <a
350          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListDeviceResources">AWS
351          * API Reference</a></p>
352          *
353          * returns a future to the operation so that it can be executed in parallel to other requests.
354          */
355         virtual Model::ListDeviceResourcesOutcomeCallable ListDeviceResourcesCallable(const Model::ListDeviceResourcesRequest& request) const;
356 
357         /**
358          * <p>Returns a list of the Amazon Web Services resources available for a device.
359          * Currently, Amazon EC2 instances are the only supported resource
360          * type.</p><p><h3>See Also:</h3>   <a
361          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListDeviceResources">AWS
362          * API Reference</a></p>
363          *
364          * Queues the request into a thread executor and triggers associated callback when operation has finished.
365          */
366         virtual void ListDeviceResourcesAsync(const Model::ListDeviceResourcesRequest& request, const ListDeviceResourcesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
367 
368         /**
369          * <p>Returns a list of all devices on your Amazon Web Services account that have
370          * Amazon Web Services Snow Device Management enabled in the Amazon Web Services
371          * Region where the command is run.</p><p><h3>See Also:</h3>   <a
372          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListDevices">AWS
373          * API Reference</a></p>
374          */
375         virtual Model::ListDevicesOutcome ListDevices(const Model::ListDevicesRequest& request) const;
376 
377         /**
378          * <p>Returns a list of all devices on your Amazon Web Services account that have
379          * Amazon Web Services Snow Device Management enabled in the Amazon Web Services
380          * Region where the command is run.</p><p><h3>See Also:</h3>   <a
381          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListDevices">AWS
382          * API Reference</a></p>
383          *
384          * returns a future to the operation so that it can be executed in parallel to other requests.
385          */
386         virtual Model::ListDevicesOutcomeCallable ListDevicesCallable(const Model::ListDevicesRequest& request) const;
387 
388         /**
389          * <p>Returns a list of all devices on your Amazon Web Services account that have
390          * Amazon Web Services Snow Device Management enabled in the Amazon Web Services
391          * Region where the command is run.</p><p><h3>See Also:</h3>   <a
392          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListDevices">AWS
393          * API Reference</a></p>
394          *
395          * Queues the request into a thread executor and triggers associated callback when operation has finished.
396          */
397         virtual void ListDevicesAsync(const Model::ListDevicesRequest& request, const ListDevicesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
398 
399         /**
400          * <p>Returns the status of tasks for one or more target devices.</p><p><h3>See
401          * Also:</h3>   <a
402          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListExecutions">AWS
403          * API Reference</a></p>
404          */
405         virtual Model::ListExecutionsOutcome ListExecutions(const Model::ListExecutionsRequest& request) const;
406 
407         /**
408          * <p>Returns the status of tasks for one or more target devices.</p><p><h3>See
409          * Also:</h3>   <a
410          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListExecutions">AWS
411          * API Reference</a></p>
412          *
413          * returns a future to the operation so that it can be executed in parallel to other requests.
414          */
415         virtual Model::ListExecutionsOutcomeCallable ListExecutionsCallable(const Model::ListExecutionsRequest& request) const;
416 
417         /**
418          * <p>Returns the status of tasks for one or more target devices.</p><p><h3>See
419          * Also:</h3>   <a
420          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListExecutions">AWS
421          * API Reference</a></p>
422          *
423          * Queues the request into a thread executor and triggers associated callback when operation has finished.
424          */
425         virtual void ListExecutionsAsync(const Model::ListExecutionsRequest& request, const ListExecutionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
426 
427         /**
428          * <p>Returns a list of tags for a managed device or task.</p><p><h3>See Also:</h3>
429          * <a
430          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListTagsForResource">AWS
431          * API Reference</a></p>
432          */
433         virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const;
434 
435         /**
436          * <p>Returns a list of tags for a managed device or task.</p><p><h3>See Also:</h3>
437          * <a
438          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListTagsForResource">AWS
439          * API Reference</a></p>
440          *
441          * returns a future to the operation so that it can be executed in parallel to other requests.
442          */
443         virtual Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const Model::ListTagsForResourceRequest& request) const;
444 
445         /**
446          * <p>Returns a list of tags for a managed device or task.</p><p><h3>See Also:</h3>
447          * <a
448          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListTagsForResource">AWS
449          * API Reference</a></p>
450          *
451          * Queues the request into a thread executor and triggers associated callback when operation has finished.
452          */
453         virtual void ListTagsForResourceAsync(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
454 
455         /**
456          * <p>Returns a list of tasks that can be filtered by state.</p><p><h3>See
457          * Also:</h3>   <a
458          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListTasks">AWS
459          * API Reference</a></p>
460          */
461         virtual Model::ListTasksOutcome ListTasks(const Model::ListTasksRequest& request) const;
462 
463         /**
464          * <p>Returns a list of tasks that can be filtered by state.</p><p><h3>See
465          * Also:</h3>   <a
466          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListTasks">AWS
467          * API Reference</a></p>
468          *
469          * returns a future to the operation so that it can be executed in parallel to other requests.
470          */
471         virtual Model::ListTasksOutcomeCallable ListTasksCallable(const Model::ListTasksRequest& request) const;
472 
473         /**
474          * <p>Returns a list of tasks that can be filtered by state.</p><p><h3>See
475          * Also:</h3>   <a
476          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/ListTasks">AWS
477          * API Reference</a></p>
478          *
479          * Queues the request into a thread executor and triggers associated callback when operation has finished.
480          */
481         virtual void ListTasksAsync(const Model::ListTasksRequest& request, const ListTasksResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
482 
483         /**
484          * <p>Adds or replaces tags on a device or task.</p><p><h3>See Also:</h3>   <a
485          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/TagResource">AWS
486          * API Reference</a></p>
487          */
488         virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const;
489 
490         /**
491          * <p>Adds or replaces tags on a device or task.</p><p><h3>See Also:</h3>   <a
492          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/TagResource">AWS
493          * API Reference</a></p>
494          *
495          * returns a future to the operation so that it can be executed in parallel to other requests.
496          */
497         virtual Model::TagResourceOutcomeCallable TagResourceCallable(const Model::TagResourceRequest& request) const;
498 
499         /**
500          * <p>Adds or replaces tags on a device or task.</p><p><h3>See Also:</h3>   <a
501          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/TagResource">AWS
502          * API Reference</a></p>
503          *
504          * Queues the request into a thread executor and triggers associated callback when operation has finished.
505          */
506         virtual void TagResourceAsync(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
507 
508         /**
509          * <p>Removes a tag from a device or task.</p><p><h3>See Also:</h3>   <a
510          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/UntagResource">AWS
511          * API Reference</a></p>
512          */
513         virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const;
514 
515         /**
516          * <p>Removes a tag from a device or task.</p><p><h3>See Also:</h3>   <a
517          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/UntagResource">AWS
518          * API Reference</a></p>
519          *
520          * returns a future to the operation so that it can be executed in parallel to other requests.
521          */
522         virtual Model::UntagResourceOutcomeCallable UntagResourceCallable(const Model::UntagResourceRequest& request) const;
523 
524         /**
525          * <p>Removes a tag from a device or task.</p><p><h3>See Also:</h3>   <a
526          * href="http://docs.aws.amazon.com/goto/WebAPI/snow-device-management-2021-08-04/UntagResource">AWS
527          * API Reference</a></p>
528          *
529          * Queues the request into a thread executor and triggers associated callback when operation has finished.
530          */
531         virtual void UntagResourceAsync(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
532 
533 
534       void OverrideEndpoint(const Aws::String& endpoint);
535     private:
536       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
537         void CancelTaskAsyncHelper(const Model::CancelTaskRequest& request, const CancelTaskResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
538         void CreateTaskAsyncHelper(const Model::CreateTaskRequest& request, const CreateTaskResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
539         void DescribeDeviceAsyncHelper(const Model::DescribeDeviceRequest& request, const DescribeDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
540         void DescribeDeviceEc2InstancesAsyncHelper(const Model::DescribeDeviceEc2InstancesRequest& request, const DescribeDeviceEc2InstancesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
541         void DescribeExecutionAsyncHelper(const Model::DescribeExecutionRequest& request, const DescribeExecutionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
542         void DescribeTaskAsyncHelper(const Model::DescribeTaskRequest& request, const DescribeTaskResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
543         void ListDeviceResourcesAsyncHelper(const Model::ListDeviceResourcesRequest& request, const ListDeviceResourcesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
544         void ListDevicesAsyncHelper(const Model::ListDevicesRequest& request, const ListDevicesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
545         void ListExecutionsAsyncHelper(const Model::ListExecutionsRequest& request, const ListExecutionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
546         void ListTagsForResourceAsyncHelper(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
547         void ListTasksAsyncHelper(const Model::ListTasksRequest& request, const ListTasksResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
548         void TagResourceAsyncHelper(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
549         void UntagResourceAsyncHelper(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
550 
551       Aws::String m_uri;
552       Aws::String m_configScheme;
553       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
554   };
555 
556 } // namespace SnowDeviceManagement
557 } // namespace Aws
558