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/appmesh/AppMesh_EXPORTS.h>
8 #include <aws/appmesh/AppMeshErrors.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/appmesh/model/CreateGatewayRouteResult.h>
15 #include <aws/appmesh/model/CreateMeshResult.h>
16 #include <aws/appmesh/model/CreateRouteResult.h>
17 #include <aws/appmesh/model/CreateVirtualGatewayResult.h>
18 #include <aws/appmesh/model/CreateVirtualNodeResult.h>
19 #include <aws/appmesh/model/CreateVirtualRouterResult.h>
20 #include <aws/appmesh/model/CreateVirtualServiceResult.h>
21 #include <aws/appmesh/model/DeleteGatewayRouteResult.h>
22 #include <aws/appmesh/model/DeleteMeshResult.h>
23 #include <aws/appmesh/model/DeleteRouteResult.h>
24 #include <aws/appmesh/model/DeleteVirtualGatewayResult.h>
25 #include <aws/appmesh/model/DeleteVirtualNodeResult.h>
26 #include <aws/appmesh/model/DeleteVirtualRouterResult.h>
27 #include <aws/appmesh/model/DeleteVirtualServiceResult.h>
28 #include <aws/appmesh/model/DescribeGatewayRouteResult.h>
29 #include <aws/appmesh/model/DescribeMeshResult.h>
30 #include <aws/appmesh/model/DescribeRouteResult.h>
31 #include <aws/appmesh/model/DescribeVirtualGatewayResult.h>
32 #include <aws/appmesh/model/DescribeVirtualNodeResult.h>
33 #include <aws/appmesh/model/DescribeVirtualRouterResult.h>
34 #include <aws/appmesh/model/DescribeVirtualServiceResult.h>
35 #include <aws/appmesh/model/ListGatewayRoutesResult.h>
36 #include <aws/appmesh/model/ListMeshesResult.h>
37 #include <aws/appmesh/model/ListRoutesResult.h>
38 #include <aws/appmesh/model/ListTagsForResourceResult.h>
39 #include <aws/appmesh/model/ListVirtualGatewaysResult.h>
40 #include <aws/appmesh/model/ListVirtualNodesResult.h>
41 #include <aws/appmesh/model/ListVirtualRoutersResult.h>
42 #include <aws/appmesh/model/ListVirtualServicesResult.h>
43 #include <aws/appmesh/model/TagResourceResult.h>
44 #include <aws/appmesh/model/UntagResourceResult.h>
45 #include <aws/appmesh/model/UpdateGatewayRouteResult.h>
46 #include <aws/appmesh/model/UpdateMeshResult.h>
47 #include <aws/appmesh/model/UpdateRouteResult.h>
48 #include <aws/appmesh/model/UpdateVirtualGatewayResult.h>
49 #include <aws/appmesh/model/UpdateVirtualNodeResult.h>
50 #include <aws/appmesh/model/UpdateVirtualRouterResult.h>
51 #include <aws/appmesh/model/UpdateVirtualServiceResult.h>
52 #include <aws/core/client/AsyncCallerContext.h>
53 #include <aws/core/http/HttpTypes.h>
54 #include <future>
55 #include <functional>
56 
57 namespace Aws
58 {
59 
60 namespace Http
61 {
62   class HttpClient;
63   class HttpClientFactory;
64 } // namespace Http
65 
66 namespace Utils
67 {
68   template< typename R, typename E> class Outcome;
69 namespace Threading
70 {
71   class Executor;
72 } // namespace Threading
73 } // namespace Utils
74 
75 namespace Auth
76 {
77   class AWSCredentials;
78   class AWSCredentialsProvider;
79 } // namespace Auth
80 
81 namespace Client
82 {
83   class RetryStrategy;
84 } // namespace Client
85 
86 namespace AppMesh
87 {
88 
89 namespace Model
90 {
91         class CreateGatewayRouteRequest;
92         class CreateMeshRequest;
93         class CreateRouteRequest;
94         class CreateVirtualGatewayRequest;
95         class CreateVirtualNodeRequest;
96         class CreateVirtualRouterRequest;
97         class CreateVirtualServiceRequest;
98         class DeleteGatewayRouteRequest;
99         class DeleteMeshRequest;
100         class DeleteRouteRequest;
101         class DeleteVirtualGatewayRequest;
102         class DeleteVirtualNodeRequest;
103         class DeleteVirtualRouterRequest;
104         class DeleteVirtualServiceRequest;
105         class DescribeGatewayRouteRequest;
106         class DescribeMeshRequest;
107         class DescribeRouteRequest;
108         class DescribeVirtualGatewayRequest;
109         class DescribeVirtualNodeRequest;
110         class DescribeVirtualRouterRequest;
111         class DescribeVirtualServiceRequest;
112         class ListGatewayRoutesRequest;
113         class ListMeshesRequest;
114         class ListRoutesRequest;
115         class ListTagsForResourceRequest;
116         class ListVirtualGatewaysRequest;
117         class ListVirtualNodesRequest;
118         class ListVirtualRoutersRequest;
119         class ListVirtualServicesRequest;
120         class TagResourceRequest;
121         class UntagResourceRequest;
122         class UpdateGatewayRouteRequest;
123         class UpdateMeshRequest;
124         class UpdateRouteRequest;
125         class UpdateVirtualGatewayRequest;
126         class UpdateVirtualNodeRequest;
127         class UpdateVirtualRouterRequest;
128         class UpdateVirtualServiceRequest;
129 
130         typedef Aws::Utils::Outcome<CreateGatewayRouteResult, AppMeshError> CreateGatewayRouteOutcome;
131         typedef Aws::Utils::Outcome<CreateMeshResult, AppMeshError> CreateMeshOutcome;
132         typedef Aws::Utils::Outcome<CreateRouteResult, AppMeshError> CreateRouteOutcome;
133         typedef Aws::Utils::Outcome<CreateVirtualGatewayResult, AppMeshError> CreateVirtualGatewayOutcome;
134         typedef Aws::Utils::Outcome<CreateVirtualNodeResult, AppMeshError> CreateVirtualNodeOutcome;
135         typedef Aws::Utils::Outcome<CreateVirtualRouterResult, AppMeshError> CreateVirtualRouterOutcome;
136         typedef Aws::Utils::Outcome<CreateVirtualServiceResult, AppMeshError> CreateVirtualServiceOutcome;
137         typedef Aws::Utils::Outcome<DeleteGatewayRouteResult, AppMeshError> DeleteGatewayRouteOutcome;
138         typedef Aws::Utils::Outcome<DeleteMeshResult, AppMeshError> DeleteMeshOutcome;
139         typedef Aws::Utils::Outcome<DeleteRouteResult, AppMeshError> DeleteRouteOutcome;
140         typedef Aws::Utils::Outcome<DeleteVirtualGatewayResult, AppMeshError> DeleteVirtualGatewayOutcome;
141         typedef Aws::Utils::Outcome<DeleteVirtualNodeResult, AppMeshError> DeleteVirtualNodeOutcome;
142         typedef Aws::Utils::Outcome<DeleteVirtualRouterResult, AppMeshError> DeleteVirtualRouterOutcome;
143         typedef Aws::Utils::Outcome<DeleteVirtualServiceResult, AppMeshError> DeleteVirtualServiceOutcome;
144         typedef Aws::Utils::Outcome<DescribeGatewayRouteResult, AppMeshError> DescribeGatewayRouteOutcome;
145         typedef Aws::Utils::Outcome<DescribeMeshResult, AppMeshError> DescribeMeshOutcome;
146         typedef Aws::Utils::Outcome<DescribeRouteResult, AppMeshError> DescribeRouteOutcome;
147         typedef Aws::Utils::Outcome<DescribeVirtualGatewayResult, AppMeshError> DescribeVirtualGatewayOutcome;
148         typedef Aws::Utils::Outcome<DescribeVirtualNodeResult, AppMeshError> DescribeVirtualNodeOutcome;
149         typedef Aws::Utils::Outcome<DescribeVirtualRouterResult, AppMeshError> DescribeVirtualRouterOutcome;
150         typedef Aws::Utils::Outcome<DescribeVirtualServiceResult, AppMeshError> DescribeVirtualServiceOutcome;
151         typedef Aws::Utils::Outcome<ListGatewayRoutesResult, AppMeshError> ListGatewayRoutesOutcome;
152         typedef Aws::Utils::Outcome<ListMeshesResult, AppMeshError> ListMeshesOutcome;
153         typedef Aws::Utils::Outcome<ListRoutesResult, AppMeshError> ListRoutesOutcome;
154         typedef Aws::Utils::Outcome<ListTagsForResourceResult, AppMeshError> ListTagsForResourceOutcome;
155         typedef Aws::Utils::Outcome<ListVirtualGatewaysResult, AppMeshError> ListVirtualGatewaysOutcome;
156         typedef Aws::Utils::Outcome<ListVirtualNodesResult, AppMeshError> ListVirtualNodesOutcome;
157         typedef Aws::Utils::Outcome<ListVirtualRoutersResult, AppMeshError> ListVirtualRoutersOutcome;
158         typedef Aws::Utils::Outcome<ListVirtualServicesResult, AppMeshError> ListVirtualServicesOutcome;
159         typedef Aws::Utils::Outcome<TagResourceResult, AppMeshError> TagResourceOutcome;
160         typedef Aws::Utils::Outcome<UntagResourceResult, AppMeshError> UntagResourceOutcome;
161         typedef Aws::Utils::Outcome<UpdateGatewayRouteResult, AppMeshError> UpdateGatewayRouteOutcome;
162         typedef Aws::Utils::Outcome<UpdateMeshResult, AppMeshError> UpdateMeshOutcome;
163         typedef Aws::Utils::Outcome<UpdateRouteResult, AppMeshError> UpdateRouteOutcome;
164         typedef Aws::Utils::Outcome<UpdateVirtualGatewayResult, AppMeshError> UpdateVirtualGatewayOutcome;
165         typedef Aws::Utils::Outcome<UpdateVirtualNodeResult, AppMeshError> UpdateVirtualNodeOutcome;
166         typedef Aws::Utils::Outcome<UpdateVirtualRouterResult, AppMeshError> UpdateVirtualRouterOutcome;
167         typedef Aws::Utils::Outcome<UpdateVirtualServiceResult, AppMeshError> UpdateVirtualServiceOutcome;
168 
169         typedef std::future<CreateGatewayRouteOutcome> CreateGatewayRouteOutcomeCallable;
170         typedef std::future<CreateMeshOutcome> CreateMeshOutcomeCallable;
171         typedef std::future<CreateRouteOutcome> CreateRouteOutcomeCallable;
172         typedef std::future<CreateVirtualGatewayOutcome> CreateVirtualGatewayOutcomeCallable;
173         typedef std::future<CreateVirtualNodeOutcome> CreateVirtualNodeOutcomeCallable;
174         typedef std::future<CreateVirtualRouterOutcome> CreateVirtualRouterOutcomeCallable;
175         typedef std::future<CreateVirtualServiceOutcome> CreateVirtualServiceOutcomeCallable;
176         typedef std::future<DeleteGatewayRouteOutcome> DeleteGatewayRouteOutcomeCallable;
177         typedef std::future<DeleteMeshOutcome> DeleteMeshOutcomeCallable;
178         typedef std::future<DeleteRouteOutcome> DeleteRouteOutcomeCallable;
179         typedef std::future<DeleteVirtualGatewayOutcome> DeleteVirtualGatewayOutcomeCallable;
180         typedef std::future<DeleteVirtualNodeOutcome> DeleteVirtualNodeOutcomeCallable;
181         typedef std::future<DeleteVirtualRouterOutcome> DeleteVirtualRouterOutcomeCallable;
182         typedef std::future<DeleteVirtualServiceOutcome> DeleteVirtualServiceOutcomeCallable;
183         typedef std::future<DescribeGatewayRouteOutcome> DescribeGatewayRouteOutcomeCallable;
184         typedef std::future<DescribeMeshOutcome> DescribeMeshOutcomeCallable;
185         typedef std::future<DescribeRouteOutcome> DescribeRouteOutcomeCallable;
186         typedef std::future<DescribeVirtualGatewayOutcome> DescribeVirtualGatewayOutcomeCallable;
187         typedef std::future<DescribeVirtualNodeOutcome> DescribeVirtualNodeOutcomeCallable;
188         typedef std::future<DescribeVirtualRouterOutcome> DescribeVirtualRouterOutcomeCallable;
189         typedef std::future<DescribeVirtualServiceOutcome> DescribeVirtualServiceOutcomeCallable;
190         typedef std::future<ListGatewayRoutesOutcome> ListGatewayRoutesOutcomeCallable;
191         typedef std::future<ListMeshesOutcome> ListMeshesOutcomeCallable;
192         typedef std::future<ListRoutesOutcome> ListRoutesOutcomeCallable;
193         typedef std::future<ListTagsForResourceOutcome> ListTagsForResourceOutcomeCallable;
194         typedef std::future<ListVirtualGatewaysOutcome> ListVirtualGatewaysOutcomeCallable;
195         typedef std::future<ListVirtualNodesOutcome> ListVirtualNodesOutcomeCallable;
196         typedef std::future<ListVirtualRoutersOutcome> ListVirtualRoutersOutcomeCallable;
197         typedef std::future<ListVirtualServicesOutcome> ListVirtualServicesOutcomeCallable;
198         typedef std::future<TagResourceOutcome> TagResourceOutcomeCallable;
199         typedef std::future<UntagResourceOutcome> UntagResourceOutcomeCallable;
200         typedef std::future<UpdateGatewayRouteOutcome> UpdateGatewayRouteOutcomeCallable;
201         typedef std::future<UpdateMeshOutcome> UpdateMeshOutcomeCallable;
202         typedef std::future<UpdateRouteOutcome> UpdateRouteOutcomeCallable;
203         typedef std::future<UpdateVirtualGatewayOutcome> UpdateVirtualGatewayOutcomeCallable;
204         typedef std::future<UpdateVirtualNodeOutcome> UpdateVirtualNodeOutcomeCallable;
205         typedef std::future<UpdateVirtualRouterOutcome> UpdateVirtualRouterOutcomeCallable;
206         typedef std::future<UpdateVirtualServiceOutcome> UpdateVirtualServiceOutcomeCallable;
207 } // namespace Model
208 
209   class AppMeshClient;
210 
211     typedef std::function<void(const AppMeshClient*, const Model::CreateGatewayRouteRequest&, const Model::CreateGatewayRouteOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateGatewayRouteResponseReceivedHandler;
212     typedef std::function<void(const AppMeshClient*, const Model::CreateMeshRequest&, const Model::CreateMeshOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateMeshResponseReceivedHandler;
213     typedef std::function<void(const AppMeshClient*, const Model::CreateRouteRequest&, const Model::CreateRouteOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateRouteResponseReceivedHandler;
214     typedef std::function<void(const AppMeshClient*, const Model::CreateVirtualGatewayRequest&, const Model::CreateVirtualGatewayOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateVirtualGatewayResponseReceivedHandler;
215     typedef std::function<void(const AppMeshClient*, const Model::CreateVirtualNodeRequest&, const Model::CreateVirtualNodeOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateVirtualNodeResponseReceivedHandler;
216     typedef std::function<void(const AppMeshClient*, const Model::CreateVirtualRouterRequest&, const Model::CreateVirtualRouterOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateVirtualRouterResponseReceivedHandler;
217     typedef std::function<void(const AppMeshClient*, const Model::CreateVirtualServiceRequest&, const Model::CreateVirtualServiceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateVirtualServiceResponseReceivedHandler;
218     typedef std::function<void(const AppMeshClient*, const Model::DeleteGatewayRouteRequest&, const Model::DeleteGatewayRouteOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteGatewayRouteResponseReceivedHandler;
219     typedef std::function<void(const AppMeshClient*, const Model::DeleteMeshRequest&, const Model::DeleteMeshOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteMeshResponseReceivedHandler;
220     typedef std::function<void(const AppMeshClient*, const Model::DeleteRouteRequest&, const Model::DeleteRouteOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteRouteResponseReceivedHandler;
221     typedef std::function<void(const AppMeshClient*, const Model::DeleteVirtualGatewayRequest&, const Model::DeleteVirtualGatewayOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteVirtualGatewayResponseReceivedHandler;
222     typedef std::function<void(const AppMeshClient*, const Model::DeleteVirtualNodeRequest&, const Model::DeleteVirtualNodeOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteVirtualNodeResponseReceivedHandler;
223     typedef std::function<void(const AppMeshClient*, const Model::DeleteVirtualRouterRequest&, const Model::DeleteVirtualRouterOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteVirtualRouterResponseReceivedHandler;
224     typedef std::function<void(const AppMeshClient*, const Model::DeleteVirtualServiceRequest&, const Model::DeleteVirtualServiceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteVirtualServiceResponseReceivedHandler;
225     typedef std::function<void(const AppMeshClient*, const Model::DescribeGatewayRouteRequest&, const Model::DescribeGatewayRouteOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeGatewayRouteResponseReceivedHandler;
226     typedef std::function<void(const AppMeshClient*, const Model::DescribeMeshRequest&, const Model::DescribeMeshOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeMeshResponseReceivedHandler;
227     typedef std::function<void(const AppMeshClient*, const Model::DescribeRouteRequest&, const Model::DescribeRouteOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeRouteResponseReceivedHandler;
228     typedef std::function<void(const AppMeshClient*, const Model::DescribeVirtualGatewayRequest&, const Model::DescribeVirtualGatewayOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeVirtualGatewayResponseReceivedHandler;
229     typedef std::function<void(const AppMeshClient*, const Model::DescribeVirtualNodeRequest&, const Model::DescribeVirtualNodeOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeVirtualNodeResponseReceivedHandler;
230     typedef std::function<void(const AppMeshClient*, const Model::DescribeVirtualRouterRequest&, const Model::DescribeVirtualRouterOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeVirtualRouterResponseReceivedHandler;
231     typedef std::function<void(const AppMeshClient*, const Model::DescribeVirtualServiceRequest&, const Model::DescribeVirtualServiceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeVirtualServiceResponseReceivedHandler;
232     typedef std::function<void(const AppMeshClient*, const Model::ListGatewayRoutesRequest&, const Model::ListGatewayRoutesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListGatewayRoutesResponseReceivedHandler;
233     typedef std::function<void(const AppMeshClient*, const Model::ListMeshesRequest&, const Model::ListMeshesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListMeshesResponseReceivedHandler;
234     typedef std::function<void(const AppMeshClient*, const Model::ListRoutesRequest&, const Model::ListRoutesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListRoutesResponseReceivedHandler;
235     typedef std::function<void(const AppMeshClient*, const Model::ListTagsForResourceRequest&, const Model::ListTagsForResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTagsForResourceResponseReceivedHandler;
236     typedef std::function<void(const AppMeshClient*, const Model::ListVirtualGatewaysRequest&, const Model::ListVirtualGatewaysOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListVirtualGatewaysResponseReceivedHandler;
237     typedef std::function<void(const AppMeshClient*, const Model::ListVirtualNodesRequest&, const Model::ListVirtualNodesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListVirtualNodesResponseReceivedHandler;
238     typedef std::function<void(const AppMeshClient*, const Model::ListVirtualRoutersRequest&, const Model::ListVirtualRoutersOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListVirtualRoutersResponseReceivedHandler;
239     typedef std::function<void(const AppMeshClient*, const Model::ListVirtualServicesRequest&, const Model::ListVirtualServicesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListVirtualServicesResponseReceivedHandler;
240     typedef std::function<void(const AppMeshClient*, const Model::TagResourceRequest&, const Model::TagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > TagResourceResponseReceivedHandler;
241     typedef std::function<void(const AppMeshClient*, const Model::UntagResourceRequest&, const Model::UntagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UntagResourceResponseReceivedHandler;
242     typedef std::function<void(const AppMeshClient*, const Model::UpdateGatewayRouteRequest&, const Model::UpdateGatewayRouteOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateGatewayRouteResponseReceivedHandler;
243     typedef std::function<void(const AppMeshClient*, const Model::UpdateMeshRequest&, const Model::UpdateMeshOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateMeshResponseReceivedHandler;
244     typedef std::function<void(const AppMeshClient*, const Model::UpdateRouteRequest&, const Model::UpdateRouteOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateRouteResponseReceivedHandler;
245     typedef std::function<void(const AppMeshClient*, const Model::UpdateVirtualGatewayRequest&, const Model::UpdateVirtualGatewayOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateVirtualGatewayResponseReceivedHandler;
246     typedef std::function<void(const AppMeshClient*, const Model::UpdateVirtualNodeRequest&, const Model::UpdateVirtualNodeOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateVirtualNodeResponseReceivedHandler;
247     typedef std::function<void(const AppMeshClient*, const Model::UpdateVirtualRouterRequest&, const Model::UpdateVirtualRouterOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateVirtualRouterResponseReceivedHandler;
248     typedef std::function<void(const AppMeshClient*, const Model::UpdateVirtualServiceRequest&, const Model::UpdateVirtualServiceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateVirtualServiceResponseReceivedHandler;
249 
250   /**
251    * <p>App Mesh is a service mesh based on the Envoy proxy that makes it easy to
252    * monitor and control microservices. App Mesh standardizes how your microservices
253    * communicate, giving you end-to-end visibility and helping to ensure high
254    * availability for your applications.</p> <p>App Mesh gives you consistent
255    * visibility and network traffic controls for every microservice in an
256    * application. You can use App Mesh with Amazon Web Services Fargate, Amazon ECS,
257    * Amazon EKS, Kubernetes on Amazon Web Services, and Amazon EC2.</p>  <p>App
258    * Mesh supports microservice applications that use service discovery naming for
259    * their components. For more information about service discovery on Amazon ECS,
260    * see <a
261    * href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html">Service
262    * Discovery</a> in the <i>Amazon Elastic Container Service Developer Guide</i>.
263    * Kubernetes <code>kube-dns</code> and <code>coredns</code> are supported. For
264    * more information, see <a
265    * href="https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/">DNS
266    * for Services and Pods</a> in the Kubernetes documentation.</p>
267    */
268   class AWS_APPMESH_API AppMeshClient : public Aws::Client::AWSJsonClient
269   {
270     public:
271       typedef Aws::Client::AWSJsonClient BASECLASS;
272 
273        /**
274         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
275         * is not specified, it will be initialized to default values.
276         */
277         AppMeshClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
278 
279        /**
280         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
281         * is not specified, it will be initialized to default values.
282         */
283         AppMeshClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
284 
285        /**
286         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
287         * the default http client factory will be used
288         */
289         AppMeshClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
290             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
291 
292         virtual ~AppMeshClient();
293 
294 
295         /**
296          * <p>Creates a gateway route.</p> <p>A gateway route is attached to a virtual
297          * gateway and routes traffic to an existing virtual service. If a route matches a
298          * request, it can distribute traffic to a target virtual service.</p> <p>For more
299          * information about gateway routes, see <a
300          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/gateway-routes.html">Gateway
301          * routes</a>.</p><p><h3>See Also:</h3>   <a
302          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateGatewayRoute">AWS
303          * API Reference</a></p>
304          */
305         virtual Model::CreateGatewayRouteOutcome CreateGatewayRoute(const Model::CreateGatewayRouteRequest& request) const;
306 
307         /**
308          * <p>Creates a gateway route.</p> <p>A gateway route is attached to a virtual
309          * gateway and routes traffic to an existing virtual service. If a route matches a
310          * request, it can distribute traffic to a target virtual service.</p> <p>For more
311          * information about gateway routes, see <a
312          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/gateway-routes.html">Gateway
313          * routes</a>.</p><p><h3>See Also:</h3>   <a
314          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateGatewayRoute">AWS
315          * API Reference</a></p>
316          *
317          * returns a future to the operation so that it can be executed in parallel to other requests.
318          */
319         virtual Model::CreateGatewayRouteOutcomeCallable CreateGatewayRouteCallable(const Model::CreateGatewayRouteRequest& request) const;
320 
321         /**
322          * <p>Creates a gateway route.</p> <p>A gateway route is attached to a virtual
323          * gateway and routes traffic to an existing virtual service. If a route matches a
324          * request, it can distribute traffic to a target virtual service.</p> <p>For more
325          * information about gateway routes, see <a
326          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/gateway-routes.html">Gateway
327          * routes</a>.</p><p><h3>See Also:</h3>   <a
328          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateGatewayRoute">AWS
329          * API Reference</a></p>
330          *
331          * Queues the request into a thread executor and triggers associated callback when operation has finished.
332          */
333         virtual void CreateGatewayRouteAsync(const Model::CreateGatewayRouteRequest& request, const CreateGatewayRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
334 
335         /**
336          * <p>Creates a service mesh.</p> <p> A service mesh is a logical boundary for
337          * network traffic between services that are represented by resources within the
338          * mesh. After you create your service mesh, you can create virtual services,
339          * virtual nodes, virtual routers, and routes to distribute traffic between the
340          * applications in your mesh.</p> <p>For more information about service meshes, see
341          * <a
342          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/meshes.html">Service
343          * meshes</a>.</p><p><h3>See Also:</h3>   <a
344          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateMesh">AWS
345          * API Reference</a></p>
346          */
347         virtual Model::CreateMeshOutcome CreateMesh(const Model::CreateMeshRequest& request) const;
348 
349         /**
350          * <p>Creates a service mesh.</p> <p> A service mesh is a logical boundary for
351          * network traffic between services that are represented by resources within the
352          * mesh. After you create your service mesh, you can create virtual services,
353          * virtual nodes, virtual routers, and routes to distribute traffic between the
354          * applications in your mesh.</p> <p>For more information about service meshes, see
355          * <a
356          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/meshes.html">Service
357          * meshes</a>.</p><p><h3>See Also:</h3>   <a
358          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateMesh">AWS
359          * API Reference</a></p>
360          *
361          * returns a future to the operation so that it can be executed in parallel to other requests.
362          */
363         virtual Model::CreateMeshOutcomeCallable CreateMeshCallable(const Model::CreateMeshRequest& request) const;
364 
365         /**
366          * <p>Creates a service mesh.</p> <p> A service mesh is a logical boundary for
367          * network traffic between services that are represented by resources within the
368          * mesh. After you create your service mesh, you can create virtual services,
369          * virtual nodes, virtual routers, and routes to distribute traffic between the
370          * applications in your mesh.</p> <p>For more information about service meshes, see
371          * <a
372          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/meshes.html">Service
373          * meshes</a>.</p><p><h3>See Also:</h3>   <a
374          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateMesh">AWS
375          * API Reference</a></p>
376          *
377          * Queues the request into a thread executor and triggers associated callback when operation has finished.
378          */
379         virtual void CreateMeshAsync(const Model::CreateMeshRequest& request, const CreateMeshResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
380 
381         /**
382          * <p>Creates a route that is associated with a virtual router.</p> <p> You can
383          * route several different protocols and define a retry policy for a route. Traffic
384          * can be routed to one or more virtual nodes.</p> <p>For more information about
385          * routes, see <a
386          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html">Routes</a>.</p><p><h3>See
387          * Also:</h3>   <a
388          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateRoute">AWS
389          * API Reference</a></p>
390          */
391         virtual Model::CreateRouteOutcome CreateRoute(const Model::CreateRouteRequest& request) const;
392 
393         /**
394          * <p>Creates a route that is associated with a virtual router.</p> <p> You can
395          * route several different protocols and define a retry policy for a route. Traffic
396          * can be routed to one or more virtual nodes.</p> <p>For more information about
397          * routes, see <a
398          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html">Routes</a>.</p><p><h3>See
399          * Also:</h3>   <a
400          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateRoute">AWS
401          * API Reference</a></p>
402          *
403          * returns a future to the operation so that it can be executed in parallel to other requests.
404          */
405         virtual Model::CreateRouteOutcomeCallable CreateRouteCallable(const Model::CreateRouteRequest& request) const;
406 
407         /**
408          * <p>Creates a route that is associated with a virtual router.</p> <p> You can
409          * route several different protocols and define a retry policy for a route. Traffic
410          * can be routed to one or more virtual nodes.</p> <p>For more information about
411          * routes, see <a
412          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html">Routes</a>.</p><p><h3>See
413          * Also:</h3>   <a
414          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateRoute">AWS
415          * API Reference</a></p>
416          *
417          * Queues the request into a thread executor and triggers associated callback when operation has finished.
418          */
419         virtual void CreateRouteAsync(const Model::CreateRouteRequest& request, const CreateRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
420 
421         /**
422          * <p>Creates a virtual gateway.</p> <p>A virtual gateway allows resources outside
423          * your mesh to communicate to resources that are inside your mesh. The virtual
424          * gateway represents an Envoy proxy running in an Amazon ECS task, in a Kubernetes
425          * service, or on an Amazon EC2 instance. Unlike a virtual node, which represents
426          * an Envoy running with an application, a virtual gateway represents Envoy
427          * deployed by itself.</p> <p>For more information about virtual gateways, see <a
428          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_gateways.html">Virtual
429          * gateways</a>. </p><p><h3>See Also:</h3>   <a
430          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualGateway">AWS
431          * API Reference</a></p>
432          */
433         virtual Model::CreateVirtualGatewayOutcome CreateVirtualGateway(const Model::CreateVirtualGatewayRequest& request) const;
434 
435         /**
436          * <p>Creates a virtual gateway.</p> <p>A virtual gateway allows resources outside
437          * your mesh to communicate to resources that are inside your mesh. The virtual
438          * gateway represents an Envoy proxy running in an Amazon ECS task, in a Kubernetes
439          * service, or on an Amazon EC2 instance. Unlike a virtual node, which represents
440          * an Envoy running with an application, a virtual gateway represents Envoy
441          * deployed by itself.</p> <p>For more information about virtual gateways, see <a
442          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_gateways.html">Virtual
443          * gateways</a>. </p><p><h3>See Also:</h3>   <a
444          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualGateway">AWS
445          * API Reference</a></p>
446          *
447          * returns a future to the operation so that it can be executed in parallel to other requests.
448          */
449         virtual Model::CreateVirtualGatewayOutcomeCallable CreateVirtualGatewayCallable(const Model::CreateVirtualGatewayRequest& request) const;
450 
451         /**
452          * <p>Creates a virtual gateway.</p> <p>A virtual gateway allows resources outside
453          * your mesh to communicate to resources that are inside your mesh. The virtual
454          * gateway represents an Envoy proxy running in an Amazon ECS task, in a Kubernetes
455          * service, or on an Amazon EC2 instance. Unlike a virtual node, which represents
456          * an Envoy running with an application, a virtual gateway represents Envoy
457          * deployed by itself.</p> <p>For more information about virtual gateways, see <a
458          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_gateways.html">Virtual
459          * gateways</a>. </p><p><h3>See Also:</h3>   <a
460          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualGateway">AWS
461          * API Reference</a></p>
462          *
463          * Queues the request into a thread executor and triggers associated callback when operation has finished.
464          */
465         virtual void CreateVirtualGatewayAsync(const Model::CreateVirtualGatewayRequest& request, const CreateVirtualGatewayResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
466 
467         /**
468          * <p>Creates a virtual node within a service mesh.</p> <p> A virtual node acts as
469          * a logical pointer to a particular task group, such as an Amazon ECS service or a
470          * Kubernetes deployment. When you create a virtual node, you can specify the
471          * service discovery information for your task group, and whether the proxy running
472          * in a task group will communicate with other proxies using Transport Layer
473          * Security (TLS).</p> <p>You define a <code>listener</code> for any inbound
474          * traffic that your virtual node expects. Any virtual service that your virtual
475          * node expects to communicate to is specified as a <code>backend</code>.</p>
476          * <p>The response metadata for your new virtual node contains the <code>arn</code>
477          * that is associated with the virtual node. Set this value to the full ARN; for
478          * example,
479          * <code>arn:aws:appmesh:us-west-2:123456789012:myMesh/default/virtualNode/myApp</code>)
480          * as the <code>APPMESH_RESOURCE_ARN</code> environment variable for your task
481          * group's Envoy proxy container in your task definition or pod spec. This is then
482          * mapped to the <code>node.id</code> and <code>node.cluster</code> Envoy
483          * parameters.</p>  <p>By default, App Mesh uses the name of the resource you
484          * specified in <code>APPMESH_RESOURCE_ARN</code> when Envoy is referring to itself
485          * in metrics and traces. You can override this behavior by setting the
486          * <code>APPMESH_RESOURCE_CLUSTER</code> environment variable with your own
487          * name.</p>  <p>For more information about virtual nodes, see <a
488          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html">Virtual
489          * nodes</a>. You must be using <code>1.15.0</code> or later of the Envoy image
490          * when setting these variables. For more information aboutApp Mesh Envoy
491          * variables, see <a
492          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy.html">Envoy
493          * image</a> in the AWS App Mesh User Guide.</p><p><h3>See Also:</h3>   <a
494          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualNode">AWS
495          * API Reference</a></p>
496          */
497         virtual Model::CreateVirtualNodeOutcome CreateVirtualNode(const Model::CreateVirtualNodeRequest& request) const;
498 
499         /**
500          * <p>Creates a virtual node within a service mesh.</p> <p> A virtual node acts as
501          * a logical pointer to a particular task group, such as an Amazon ECS service or a
502          * Kubernetes deployment. When you create a virtual node, you can specify the
503          * service discovery information for your task group, and whether the proxy running
504          * in a task group will communicate with other proxies using Transport Layer
505          * Security (TLS).</p> <p>You define a <code>listener</code> for any inbound
506          * traffic that your virtual node expects. Any virtual service that your virtual
507          * node expects to communicate to is specified as a <code>backend</code>.</p>
508          * <p>The response metadata for your new virtual node contains the <code>arn</code>
509          * that is associated with the virtual node. Set this value to the full ARN; for
510          * example,
511          * <code>arn:aws:appmesh:us-west-2:123456789012:myMesh/default/virtualNode/myApp</code>)
512          * as the <code>APPMESH_RESOURCE_ARN</code> environment variable for your task
513          * group's Envoy proxy container in your task definition or pod spec. This is then
514          * mapped to the <code>node.id</code> and <code>node.cluster</code> Envoy
515          * parameters.</p>  <p>By default, App Mesh uses the name of the resource you
516          * specified in <code>APPMESH_RESOURCE_ARN</code> when Envoy is referring to itself
517          * in metrics and traces. You can override this behavior by setting the
518          * <code>APPMESH_RESOURCE_CLUSTER</code> environment variable with your own
519          * name.</p>  <p>For more information about virtual nodes, see <a
520          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html">Virtual
521          * nodes</a>. You must be using <code>1.15.0</code> or later of the Envoy image
522          * when setting these variables. For more information aboutApp Mesh Envoy
523          * variables, see <a
524          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy.html">Envoy
525          * image</a> in the AWS App Mesh User Guide.</p><p><h3>See Also:</h3>   <a
526          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualNode">AWS
527          * API Reference</a></p>
528          *
529          * returns a future to the operation so that it can be executed in parallel to other requests.
530          */
531         virtual Model::CreateVirtualNodeOutcomeCallable CreateVirtualNodeCallable(const Model::CreateVirtualNodeRequest& request) const;
532 
533         /**
534          * <p>Creates a virtual node within a service mesh.</p> <p> A virtual node acts as
535          * a logical pointer to a particular task group, such as an Amazon ECS service or a
536          * Kubernetes deployment. When you create a virtual node, you can specify the
537          * service discovery information for your task group, and whether the proxy running
538          * in a task group will communicate with other proxies using Transport Layer
539          * Security (TLS).</p> <p>You define a <code>listener</code> for any inbound
540          * traffic that your virtual node expects. Any virtual service that your virtual
541          * node expects to communicate to is specified as a <code>backend</code>.</p>
542          * <p>The response metadata for your new virtual node contains the <code>arn</code>
543          * that is associated with the virtual node. Set this value to the full ARN; for
544          * example,
545          * <code>arn:aws:appmesh:us-west-2:123456789012:myMesh/default/virtualNode/myApp</code>)
546          * as the <code>APPMESH_RESOURCE_ARN</code> environment variable for your task
547          * group's Envoy proxy container in your task definition or pod spec. This is then
548          * mapped to the <code>node.id</code> and <code>node.cluster</code> Envoy
549          * parameters.</p>  <p>By default, App Mesh uses the name of the resource you
550          * specified in <code>APPMESH_RESOURCE_ARN</code> when Envoy is referring to itself
551          * in metrics and traces. You can override this behavior by setting the
552          * <code>APPMESH_RESOURCE_CLUSTER</code> environment variable with your own
553          * name.</p>  <p>For more information about virtual nodes, see <a
554          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html">Virtual
555          * nodes</a>. You must be using <code>1.15.0</code> or later of the Envoy image
556          * when setting these variables. For more information aboutApp Mesh Envoy
557          * variables, see <a
558          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy.html">Envoy
559          * image</a> in the AWS App Mesh User Guide.</p><p><h3>See Also:</h3>   <a
560          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualNode">AWS
561          * API Reference</a></p>
562          *
563          * Queues the request into a thread executor and triggers associated callback when operation has finished.
564          */
565         virtual void CreateVirtualNodeAsync(const Model::CreateVirtualNodeRequest& request, const CreateVirtualNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
566 
567         /**
568          * <p>Creates a virtual router within a service mesh.</p> <p>Specify a
569          * <code>listener</code> for any inbound traffic that your virtual router receives.
570          * Create a virtual router for each protocol and port that you need to route.
571          * Virtual routers handle traffic for one or more virtual services within your
572          * mesh. After you create your virtual router, create and associate routes for your
573          * virtual router that direct incoming requests to different virtual nodes.</p>
574          * <p>For more information about virtual routers, see <a
575          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_routers.html">Virtual
576          * routers</a>.</p><p><h3>See Also:</h3>   <a
577          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualRouter">AWS
578          * API Reference</a></p>
579          */
580         virtual Model::CreateVirtualRouterOutcome CreateVirtualRouter(const Model::CreateVirtualRouterRequest& request) const;
581 
582         /**
583          * <p>Creates a virtual router within a service mesh.</p> <p>Specify a
584          * <code>listener</code> for any inbound traffic that your virtual router receives.
585          * Create a virtual router for each protocol and port that you need to route.
586          * Virtual routers handle traffic for one or more virtual services within your
587          * mesh. After you create your virtual router, create and associate routes for your
588          * virtual router that direct incoming requests to different virtual nodes.</p>
589          * <p>For more information about virtual routers, see <a
590          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_routers.html">Virtual
591          * routers</a>.</p><p><h3>See Also:</h3>   <a
592          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualRouter">AWS
593          * API Reference</a></p>
594          *
595          * returns a future to the operation so that it can be executed in parallel to other requests.
596          */
597         virtual Model::CreateVirtualRouterOutcomeCallable CreateVirtualRouterCallable(const Model::CreateVirtualRouterRequest& request) const;
598 
599         /**
600          * <p>Creates a virtual router within a service mesh.</p> <p>Specify a
601          * <code>listener</code> for any inbound traffic that your virtual router receives.
602          * Create a virtual router for each protocol and port that you need to route.
603          * Virtual routers handle traffic for one or more virtual services within your
604          * mesh. After you create your virtual router, create and associate routes for your
605          * virtual router that direct incoming requests to different virtual nodes.</p>
606          * <p>For more information about virtual routers, see <a
607          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_routers.html">Virtual
608          * routers</a>.</p><p><h3>See Also:</h3>   <a
609          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualRouter">AWS
610          * API Reference</a></p>
611          *
612          * Queues the request into a thread executor and triggers associated callback when operation has finished.
613          */
614         virtual void CreateVirtualRouterAsync(const Model::CreateVirtualRouterRequest& request, const CreateVirtualRouterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
615 
616         /**
617          * <p>Creates a virtual service within a service mesh.</p> <p>A virtual service is
618          * an abstraction of a real service that is provided by a virtual node directly or
619          * indirectly by means of a virtual router. Dependent services call your virtual
620          * service by its <code>virtualServiceName</code>, and those requests are routed to
621          * the virtual node or virtual router that is specified as the provider for the
622          * virtual service.</p> <p>For more information about virtual services, see <a
623          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_services.html">Virtual
624          * services</a>.</p><p><h3>See Also:</h3>   <a
625          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualService">AWS
626          * API Reference</a></p>
627          */
628         virtual Model::CreateVirtualServiceOutcome CreateVirtualService(const Model::CreateVirtualServiceRequest& request) const;
629 
630         /**
631          * <p>Creates a virtual service within a service mesh.</p> <p>A virtual service is
632          * an abstraction of a real service that is provided by a virtual node directly or
633          * indirectly by means of a virtual router. Dependent services call your virtual
634          * service by its <code>virtualServiceName</code>, and those requests are routed to
635          * the virtual node or virtual router that is specified as the provider for the
636          * virtual service.</p> <p>For more information about virtual services, see <a
637          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_services.html">Virtual
638          * services</a>.</p><p><h3>See Also:</h3>   <a
639          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualService">AWS
640          * API Reference</a></p>
641          *
642          * returns a future to the operation so that it can be executed in parallel to other requests.
643          */
644         virtual Model::CreateVirtualServiceOutcomeCallable CreateVirtualServiceCallable(const Model::CreateVirtualServiceRequest& request) const;
645 
646         /**
647          * <p>Creates a virtual service within a service mesh.</p> <p>A virtual service is
648          * an abstraction of a real service that is provided by a virtual node directly or
649          * indirectly by means of a virtual router. Dependent services call your virtual
650          * service by its <code>virtualServiceName</code>, and those requests are routed to
651          * the virtual node or virtual router that is specified as the provider for the
652          * virtual service.</p> <p>For more information about virtual services, see <a
653          * href="https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_services.html">Virtual
654          * services</a>.</p><p><h3>See Also:</h3>   <a
655          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualService">AWS
656          * API Reference</a></p>
657          *
658          * Queues the request into a thread executor and triggers associated callback when operation has finished.
659          */
660         virtual void CreateVirtualServiceAsync(const Model::CreateVirtualServiceRequest& request, const CreateVirtualServiceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
661 
662         /**
663          * <p>Deletes an existing gateway route.</p><p><h3>See Also:</h3>   <a
664          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteGatewayRoute">AWS
665          * API Reference</a></p>
666          */
667         virtual Model::DeleteGatewayRouteOutcome DeleteGatewayRoute(const Model::DeleteGatewayRouteRequest& request) const;
668 
669         /**
670          * <p>Deletes an existing gateway route.</p><p><h3>See Also:</h3>   <a
671          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteGatewayRoute">AWS
672          * API Reference</a></p>
673          *
674          * returns a future to the operation so that it can be executed in parallel to other requests.
675          */
676         virtual Model::DeleteGatewayRouteOutcomeCallable DeleteGatewayRouteCallable(const Model::DeleteGatewayRouteRequest& request) const;
677 
678         /**
679          * <p>Deletes an existing gateway route.</p><p><h3>See Also:</h3>   <a
680          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteGatewayRoute">AWS
681          * API Reference</a></p>
682          *
683          * Queues the request into a thread executor and triggers associated callback when operation has finished.
684          */
685         virtual void DeleteGatewayRouteAsync(const Model::DeleteGatewayRouteRequest& request, const DeleteGatewayRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
686 
687         /**
688          * <p>Deletes an existing service mesh.</p> <p>You must delete all resources
689          * (virtual services, routes, virtual routers, and virtual nodes) in the service
690          * mesh before you can delete the mesh itself.</p><p><h3>See Also:</h3>   <a
691          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteMesh">AWS
692          * API Reference</a></p>
693          */
694         virtual Model::DeleteMeshOutcome DeleteMesh(const Model::DeleteMeshRequest& request) const;
695 
696         /**
697          * <p>Deletes an existing service mesh.</p> <p>You must delete all resources
698          * (virtual services, routes, virtual routers, and virtual nodes) in the service
699          * mesh before you can delete the mesh itself.</p><p><h3>See Also:</h3>   <a
700          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteMesh">AWS
701          * API Reference</a></p>
702          *
703          * returns a future to the operation so that it can be executed in parallel to other requests.
704          */
705         virtual Model::DeleteMeshOutcomeCallable DeleteMeshCallable(const Model::DeleteMeshRequest& request) const;
706 
707         /**
708          * <p>Deletes an existing service mesh.</p> <p>You must delete all resources
709          * (virtual services, routes, virtual routers, and virtual nodes) in the service
710          * mesh before you can delete the mesh itself.</p><p><h3>See Also:</h3>   <a
711          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteMesh">AWS
712          * API Reference</a></p>
713          *
714          * Queues the request into a thread executor and triggers associated callback when operation has finished.
715          */
716         virtual void DeleteMeshAsync(const Model::DeleteMeshRequest& request, const DeleteMeshResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
717 
718         /**
719          * <p>Deletes an existing route.</p><p><h3>See Also:</h3>   <a
720          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteRoute">AWS
721          * API Reference</a></p>
722          */
723         virtual Model::DeleteRouteOutcome DeleteRoute(const Model::DeleteRouteRequest& request) const;
724 
725         /**
726          * <p>Deletes an existing route.</p><p><h3>See Also:</h3>   <a
727          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteRoute">AWS
728          * API Reference</a></p>
729          *
730          * returns a future to the operation so that it can be executed in parallel to other requests.
731          */
732         virtual Model::DeleteRouteOutcomeCallable DeleteRouteCallable(const Model::DeleteRouteRequest& request) const;
733 
734         /**
735          * <p>Deletes an existing route.</p><p><h3>See Also:</h3>   <a
736          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteRoute">AWS
737          * API Reference</a></p>
738          *
739          * Queues the request into a thread executor and triggers associated callback when operation has finished.
740          */
741         virtual void DeleteRouteAsync(const Model::DeleteRouteRequest& request, const DeleteRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
742 
743         /**
744          * <p>Deletes an existing virtual gateway. You cannot delete a virtual gateway if
745          * any gateway routes are associated to it.</p><p><h3>See Also:</h3>   <a
746          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualGateway">AWS
747          * API Reference</a></p>
748          */
749         virtual Model::DeleteVirtualGatewayOutcome DeleteVirtualGateway(const Model::DeleteVirtualGatewayRequest& request) const;
750 
751         /**
752          * <p>Deletes an existing virtual gateway. You cannot delete a virtual gateway if
753          * any gateway routes are associated to it.</p><p><h3>See Also:</h3>   <a
754          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualGateway">AWS
755          * API Reference</a></p>
756          *
757          * returns a future to the operation so that it can be executed in parallel to other requests.
758          */
759         virtual Model::DeleteVirtualGatewayOutcomeCallable DeleteVirtualGatewayCallable(const Model::DeleteVirtualGatewayRequest& request) const;
760 
761         /**
762          * <p>Deletes an existing virtual gateway. You cannot delete a virtual gateway if
763          * any gateway routes are associated to it.</p><p><h3>See Also:</h3>   <a
764          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualGateway">AWS
765          * API Reference</a></p>
766          *
767          * Queues the request into a thread executor and triggers associated callback when operation has finished.
768          */
769         virtual void DeleteVirtualGatewayAsync(const Model::DeleteVirtualGatewayRequest& request, const DeleteVirtualGatewayResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
770 
771         /**
772          * <p>Deletes an existing virtual node.</p> <p>You must delete any virtual services
773          * that list a virtual node as a service provider before you can delete the virtual
774          * node itself.</p><p><h3>See Also:</h3>   <a
775          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualNode">AWS
776          * API Reference</a></p>
777          */
778         virtual Model::DeleteVirtualNodeOutcome DeleteVirtualNode(const Model::DeleteVirtualNodeRequest& request) const;
779 
780         /**
781          * <p>Deletes an existing virtual node.</p> <p>You must delete any virtual services
782          * that list a virtual node as a service provider before you can delete the virtual
783          * node itself.</p><p><h3>See Also:</h3>   <a
784          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualNode">AWS
785          * API Reference</a></p>
786          *
787          * returns a future to the operation so that it can be executed in parallel to other requests.
788          */
789         virtual Model::DeleteVirtualNodeOutcomeCallable DeleteVirtualNodeCallable(const Model::DeleteVirtualNodeRequest& request) const;
790 
791         /**
792          * <p>Deletes an existing virtual node.</p> <p>You must delete any virtual services
793          * that list a virtual node as a service provider before you can delete the virtual
794          * node itself.</p><p><h3>See Also:</h3>   <a
795          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualNode">AWS
796          * API Reference</a></p>
797          *
798          * Queues the request into a thread executor and triggers associated callback when operation has finished.
799          */
800         virtual void DeleteVirtualNodeAsync(const Model::DeleteVirtualNodeRequest& request, const DeleteVirtualNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
801 
802         /**
803          * <p>Deletes an existing virtual router.</p> <p>You must delete any routes
804          * associated with the virtual router before you can delete the router
805          * itself.</p><p><h3>See Also:</h3>   <a
806          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualRouter">AWS
807          * API Reference</a></p>
808          */
809         virtual Model::DeleteVirtualRouterOutcome DeleteVirtualRouter(const Model::DeleteVirtualRouterRequest& request) const;
810 
811         /**
812          * <p>Deletes an existing virtual router.</p> <p>You must delete any routes
813          * associated with the virtual router before you can delete the router
814          * itself.</p><p><h3>See Also:</h3>   <a
815          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualRouter">AWS
816          * API Reference</a></p>
817          *
818          * returns a future to the operation so that it can be executed in parallel to other requests.
819          */
820         virtual Model::DeleteVirtualRouterOutcomeCallable DeleteVirtualRouterCallable(const Model::DeleteVirtualRouterRequest& request) const;
821 
822         /**
823          * <p>Deletes an existing virtual router.</p> <p>You must delete any routes
824          * associated with the virtual router before you can delete the router
825          * itself.</p><p><h3>See Also:</h3>   <a
826          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualRouter">AWS
827          * API Reference</a></p>
828          *
829          * Queues the request into a thread executor and triggers associated callback when operation has finished.
830          */
831         virtual void DeleteVirtualRouterAsync(const Model::DeleteVirtualRouterRequest& request, const DeleteVirtualRouterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
832 
833         /**
834          * <p>Deletes an existing virtual service.</p><p><h3>See Also:</h3>   <a
835          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualService">AWS
836          * API Reference</a></p>
837          */
838         virtual Model::DeleteVirtualServiceOutcome DeleteVirtualService(const Model::DeleteVirtualServiceRequest& request) const;
839 
840         /**
841          * <p>Deletes an existing virtual service.</p><p><h3>See Also:</h3>   <a
842          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualService">AWS
843          * API Reference</a></p>
844          *
845          * returns a future to the operation so that it can be executed in parallel to other requests.
846          */
847         virtual Model::DeleteVirtualServiceOutcomeCallable DeleteVirtualServiceCallable(const Model::DeleteVirtualServiceRequest& request) const;
848 
849         /**
850          * <p>Deletes an existing virtual service.</p><p><h3>See Also:</h3>   <a
851          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualService">AWS
852          * API Reference</a></p>
853          *
854          * Queues the request into a thread executor and triggers associated callback when operation has finished.
855          */
856         virtual void DeleteVirtualServiceAsync(const Model::DeleteVirtualServiceRequest& request, const DeleteVirtualServiceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
857 
858         /**
859          * <p>Describes an existing gateway route.</p><p><h3>See Also:</h3>   <a
860          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeGatewayRoute">AWS
861          * API Reference</a></p>
862          */
863         virtual Model::DescribeGatewayRouteOutcome DescribeGatewayRoute(const Model::DescribeGatewayRouteRequest& request) const;
864 
865         /**
866          * <p>Describes an existing gateway route.</p><p><h3>See Also:</h3>   <a
867          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeGatewayRoute">AWS
868          * API Reference</a></p>
869          *
870          * returns a future to the operation so that it can be executed in parallel to other requests.
871          */
872         virtual Model::DescribeGatewayRouteOutcomeCallable DescribeGatewayRouteCallable(const Model::DescribeGatewayRouteRequest& request) const;
873 
874         /**
875          * <p>Describes an existing gateway route.</p><p><h3>See Also:</h3>   <a
876          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeGatewayRoute">AWS
877          * API Reference</a></p>
878          *
879          * Queues the request into a thread executor and triggers associated callback when operation has finished.
880          */
881         virtual void DescribeGatewayRouteAsync(const Model::DescribeGatewayRouteRequest& request, const DescribeGatewayRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
882 
883         /**
884          * <p>Describes an existing service mesh.</p><p><h3>See Also:</h3>   <a
885          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeMesh">AWS
886          * API Reference</a></p>
887          */
888         virtual Model::DescribeMeshOutcome DescribeMesh(const Model::DescribeMeshRequest& request) const;
889 
890         /**
891          * <p>Describes an existing service mesh.</p><p><h3>See Also:</h3>   <a
892          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeMesh">AWS
893          * API Reference</a></p>
894          *
895          * returns a future to the operation so that it can be executed in parallel to other requests.
896          */
897         virtual Model::DescribeMeshOutcomeCallable DescribeMeshCallable(const Model::DescribeMeshRequest& request) const;
898 
899         /**
900          * <p>Describes an existing service mesh.</p><p><h3>See Also:</h3>   <a
901          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeMesh">AWS
902          * API Reference</a></p>
903          *
904          * Queues the request into a thread executor and triggers associated callback when operation has finished.
905          */
906         virtual void DescribeMeshAsync(const Model::DescribeMeshRequest& request, const DescribeMeshResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
907 
908         /**
909          * <p>Describes an existing route.</p><p><h3>See Also:</h3>   <a
910          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeRoute">AWS
911          * API Reference</a></p>
912          */
913         virtual Model::DescribeRouteOutcome DescribeRoute(const Model::DescribeRouteRequest& request) const;
914 
915         /**
916          * <p>Describes an existing route.</p><p><h3>See Also:</h3>   <a
917          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeRoute">AWS
918          * API Reference</a></p>
919          *
920          * returns a future to the operation so that it can be executed in parallel to other requests.
921          */
922         virtual Model::DescribeRouteOutcomeCallable DescribeRouteCallable(const Model::DescribeRouteRequest& request) const;
923 
924         /**
925          * <p>Describes an existing route.</p><p><h3>See Also:</h3>   <a
926          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeRoute">AWS
927          * API Reference</a></p>
928          *
929          * Queues the request into a thread executor and triggers associated callback when operation has finished.
930          */
931         virtual void DescribeRouteAsync(const Model::DescribeRouteRequest& request, const DescribeRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
932 
933         /**
934          * <p>Describes an existing virtual gateway.</p><p><h3>See Also:</h3>   <a
935          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualGateway">AWS
936          * API Reference</a></p>
937          */
938         virtual Model::DescribeVirtualGatewayOutcome DescribeVirtualGateway(const Model::DescribeVirtualGatewayRequest& request) const;
939 
940         /**
941          * <p>Describes an existing virtual gateway.</p><p><h3>See Also:</h3>   <a
942          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualGateway">AWS
943          * API Reference</a></p>
944          *
945          * returns a future to the operation so that it can be executed in parallel to other requests.
946          */
947         virtual Model::DescribeVirtualGatewayOutcomeCallable DescribeVirtualGatewayCallable(const Model::DescribeVirtualGatewayRequest& request) const;
948 
949         /**
950          * <p>Describes an existing virtual gateway.</p><p><h3>See Also:</h3>   <a
951          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualGateway">AWS
952          * API Reference</a></p>
953          *
954          * Queues the request into a thread executor and triggers associated callback when operation has finished.
955          */
956         virtual void DescribeVirtualGatewayAsync(const Model::DescribeVirtualGatewayRequest& request, const DescribeVirtualGatewayResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
957 
958         /**
959          * <p>Describes an existing virtual node.</p><p><h3>See Also:</h3>   <a
960          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualNode">AWS
961          * API Reference</a></p>
962          */
963         virtual Model::DescribeVirtualNodeOutcome DescribeVirtualNode(const Model::DescribeVirtualNodeRequest& request) const;
964 
965         /**
966          * <p>Describes an existing virtual node.</p><p><h3>See Also:</h3>   <a
967          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualNode">AWS
968          * API Reference</a></p>
969          *
970          * returns a future to the operation so that it can be executed in parallel to other requests.
971          */
972         virtual Model::DescribeVirtualNodeOutcomeCallable DescribeVirtualNodeCallable(const Model::DescribeVirtualNodeRequest& request) const;
973 
974         /**
975          * <p>Describes an existing virtual node.</p><p><h3>See Also:</h3>   <a
976          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualNode">AWS
977          * API Reference</a></p>
978          *
979          * Queues the request into a thread executor and triggers associated callback when operation has finished.
980          */
981         virtual void DescribeVirtualNodeAsync(const Model::DescribeVirtualNodeRequest& request, const DescribeVirtualNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
982 
983         /**
984          * <p>Describes an existing virtual router.</p><p><h3>See Also:</h3>   <a
985          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualRouter">AWS
986          * API Reference</a></p>
987          */
988         virtual Model::DescribeVirtualRouterOutcome DescribeVirtualRouter(const Model::DescribeVirtualRouterRequest& request) const;
989 
990         /**
991          * <p>Describes an existing virtual router.</p><p><h3>See Also:</h3>   <a
992          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualRouter">AWS
993          * API Reference</a></p>
994          *
995          * returns a future to the operation so that it can be executed in parallel to other requests.
996          */
997         virtual Model::DescribeVirtualRouterOutcomeCallable DescribeVirtualRouterCallable(const Model::DescribeVirtualRouterRequest& request) const;
998 
999         /**
1000          * <p>Describes an existing virtual router.</p><p><h3>See Also:</h3>   <a
1001          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualRouter">AWS
1002          * API Reference</a></p>
1003          *
1004          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1005          */
1006         virtual void DescribeVirtualRouterAsync(const Model::DescribeVirtualRouterRequest& request, const DescribeVirtualRouterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1007 
1008         /**
1009          * <p>Describes an existing virtual service.</p><p><h3>See Also:</h3>   <a
1010          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualService">AWS
1011          * API Reference</a></p>
1012          */
1013         virtual Model::DescribeVirtualServiceOutcome DescribeVirtualService(const Model::DescribeVirtualServiceRequest& request) const;
1014 
1015         /**
1016          * <p>Describes an existing virtual service.</p><p><h3>See Also:</h3>   <a
1017          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualService">AWS
1018          * API Reference</a></p>
1019          *
1020          * returns a future to the operation so that it can be executed in parallel to other requests.
1021          */
1022         virtual Model::DescribeVirtualServiceOutcomeCallable DescribeVirtualServiceCallable(const Model::DescribeVirtualServiceRequest& request) const;
1023 
1024         /**
1025          * <p>Describes an existing virtual service.</p><p><h3>See Also:</h3>   <a
1026          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualService">AWS
1027          * API Reference</a></p>
1028          *
1029          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1030          */
1031         virtual void DescribeVirtualServiceAsync(const Model::DescribeVirtualServiceRequest& request, const DescribeVirtualServiceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1032 
1033         /**
1034          * <p>Returns a list of existing gateway routes that are associated to a virtual
1035          * gateway.</p><p><h3>See Also:</h3>   <a
1036          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListGatewayRoutes">AWS
1037          * API Reference</a></p>
1038          */
1039         virtual Model::ListGatewayRoutesOutcome ListGatewayRoutes(const Model::ListGatewayRoutesRequest& request) const;
1040 
1041         /**
1042          * <p>Returns a list of existing gateway routes that are associated to a virtual
1043          * gateway.</p><p><h3>See Also:</h3>   <a
1044          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListGatewayRoutes">AWS
1045          * API Reference</a></p>
1046          *
1047          * returns a future to the operation so that it can be executed in parallel to other requests.
1048          */
1049         virtual Model::ListGatewayRoutesOutcomeCallable ListGatewayRoutesCallable(const Model::ListGatewayRoutesRequest& request) const;
1050 
1051         /**
1052          * <p>Returns a list of existing gateway routes that are associated to a virtual
1053          * gateway.</p><p><h3>See Also:</h3>   <a
1054          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListGatewayRoutes">AWS
1055          * API Reference</a></p>
1056          *
1057          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1058          */
1059         virtual void ListGatewayRoutesAsync(const Model::ListGatewayRoutesRequest& request, const ListGatewayRoutesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1060 
1061         /**
1062          * <p>Returns a list of existing service meshes.</p><p><h3>See Also:</h3>   <a
1063          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListMeshes">AWS
1064          * API Reference</a></p>
1065          */
1066         virtual Model::ListMeshesOutcome ListMeshes(const Model::ListMeshesRequest& request) const;
1067 
1068         /**
1069          * <p>Returns a list of existing service meshes.</p><p><h3>See Also:</h3>   <a
1070          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListMeshes">AWS
1071          * API Reference</a></p>
1072          *
1073          * returns a future to the operation so that it can be executed in parallel to other requests.
1074          */
1075         virtual Model::ListMeshesOutcomeCallable ListMeshesCallable(const Model::ListMeshesRequest& request) const;
1076 
1077         /**
1078          * <p>Returns a list of existing service meshes.</p><p><h3>See Also:</h3>   <a
1079          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListMeshes">AWS
1080          * API Reference</a></p>
1081          *
1082          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1083          */
1084         virtual void ListMeshesAsync(const Model::ListMeshesRequest& request, const ListMeshesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1085 
1086         /**
1087          * <p>Returns a list of existing routes in a service mesh.</p><p><h3>See Also:</h3>
1088          * <a
1089          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListRoutes">AWS
1090          * API Reference</a></p>
1091          */
1092         virtual Model::ListRoutesOutcome ListRoutes(const Model::ListRoutesRequest& request) const;
1093 
1094         /**
1095          * <p>Returns a list of existing routes in a service mesh.</p><p><h3>See Also:</h3>
1096          * <a
1097          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListRoutes">AWS
1098          * API Reference</a></p>
1099          *
1100          * returns a future to the operation so that it can be executed in parallel to other requests.
1101          */
1102         virtual Model::ListRoutesOutcomeCallable ListRoutesCallable(const Model::ListRoutesRequest& request) const;
1103 
1104         /**
1105          * <p>Returns a list of existing routes in a service mesh.</p><p><h3>See Also:</h3>
1106          * <a
1107          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListRoutes">AWS
1108          * API Reference</a></p>
1109          *
1110          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1111          */
1112         virtual void ListRoutesAsync(const Model::ListRoutesRequest& request, const ListRoutesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1113 
1114         /**
1115          * <p>List the tags for an App Mesh resource.</p><p><h3>See Also:</h3>   <a
1116          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListTagsForResource">AWS
1117          * API Reference</a></p>
1118          */
1119         virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const;
1120 
1121         /**
1122          * <p>List the tags for an App Mesh resource.</p><p><h3>See Also:</h3>   <a
1123          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListTagsForResource">AWS
1124          * API Reference</a></p>
1125          *
1126          * returns a future to the operation so that it can be executed in parallel to other requests.
1127          */
1128         virtual Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const Model::ListTagsForResourceRequest& request) const;
1129 
1130         /**
1131          * <p>List the tags for an App Mesh resource.</p><p><h3>See Also:</h3>   <a
1132          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListTagsForResource">AWS
1133          * API Reference</a></p>
1134          *
1135          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1136          */
1137         virtual void ListTagsForResourceAsync(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1138 
1139         /**
1140          * <p>Returns a list of existing virtual gateways in a service mesh.</p><p><h3>See
1141          * Also:</h3>   <a
1142          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualGateways">AWS
1143          * API Reference</a></p>
1144          */
1145         virtual Model::ListVirtualGatewaysOutcome ListVirtualGateways(const Model::ListVirtualGatewaysRequest& request) const;
1146 
1147         /**
1148          * <p>Returns a list of existing virtual gateways in a service mesh.</p><p><h3>See
1149          * Also:</h3>   <a
1150          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualGateways">AWS
1151          * API Reference</a></p>
1152          *
1153          * returns a future to the operation so that it can be executed in parallel to other requests.
1154          */
1155         virtual Model::ListVirtualGatewaysOutcomeCallable ListVirtualGatewaysCallable(const Model::ListVirtualGatewaysRequest& request) const;
1156 
1157         /**
1158          * <p>Returns a list of existing virtual gateways in a service mesh.</p><p><h3>See
1159          * Also:</h3>   <a
1160          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualGateways">AWS
1161          * API Reference</a></p>
1162          *
1163          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1164          */
1165         virtual void ListVirtualGatewaysAsync(const Model::ListVirtualGatewaysRequest& request, const ListVirtualGatewaysResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1166 
1167         /**
1168          * <p>Returns a list of existing virtual nodes.</p><p><h3>See Also:</h3>   <a
1169          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualNodes">AWS
1170          * API Reference</a></p>
1171          */
1172         virtual Model::ListVirtualNodesOutcome ListVirtualNodes(const Model::ListVirtualNodesRequest& request) const;
1173 
1174         /**
1175          * <p>Returns a list of existing virtual nodes.</p><p><h3>See Also:</h3>   <a
1176          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualNodes">AWS
1177          * API Reference</a></p>
1178          *
1179          * returns a future to the operation so that it can be executed in parallel to other requests.
1180          */
1181         virtual Model::ListVirtualNodesOutcomeCallable ListVirtualNodesCallable(const Model::ListVirtualNodesRequest& request) const;
1182 
1183         /**
1184          * <p>Returns a list of existing virtual nodes.</p><p><h3>See Also:</h3>   <a
1185          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualNodes">AWS
1186          * API Reference</a></p>
1187          *
1188          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1189          */
1190         virtual void ListVirtualNodesAsync(const Model::ListVirtualNodesRequest& request, const ListVirtualNodesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1191 
1192         /**
1193          * <p>Returns a list of existing virtual routers in a service mesh.</p><p><h3>See
1194          * Also:</h3>   <a
1195          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualRouters">AWS
1196          * API Reference</a></p>
1197          */
1198         virtual Model::ListVirtualRoutersOutcome ListVirtualRouters(const Model::ListVirtualRoutersRequest& request) const;
1199 
1200         /**
1201          * <p>Returns a list of existing virtual routers in a service mesh.</p><p><h3>See
1202          * Also:</h3>   <a
1203          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualRouters">AWS
1204          * API Reference</a></p>
1205          *
1206          * returns a future to the operation so that it can be executed in parallel to other requests.
1207          */
1208         virtual Model::ListVirtualRoutersOutcomeCallable ListVirtualRoutersCallable(const Model::ListVirtualRoutersRequest& request) const;
1209 
1210         /**
1211          * <p>Returns a list of existing virtual routers in a service mesh.</p><p><h3>See
1212          * Also:</h3>   <a
1213          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualRouters">AWS
1214          * API Reference</a></p>
1215          *
1216          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1217          */
1218         virtual void ListVirtualRoutersAsync(const Model::ListVirtualRoutersRequest& request, const ListVirtualRoutersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1219 
1220         /**
1221          * <p>Returns a list of existing virtual services in a service mesh.</p><p><h3>See
1222          * Also:</h3>   <a
1223          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualServices">AWS
1224          * API Reference</a></p>
1225          */
1226         virtual Model::ListVirtualServicesOutcome ListVirtualServices(const Model::ListVirtualServicesRequest& request) const;
1227 
1228         /**
1229          * <p>Returns a list of existing virtual services in a service mesh.</p><p><h3>See
1230          * Also:</h3>   <a
1231          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualServices">AWS
1232          * API Reference</a></p>
1233          *
1234          * returns a future to the operation so that it can be executed in parallel to other requests.
1235          */
1236         virtual Model::ListVirtualServicesOutcomeCallable ListVirtualServicesCallable(const Model::ListVirtualServicesRequest& request) const;
1237 
1238         /**
1239          * <p>Returns a list of existing virtual services in a service mesh.</p><p><h3>See
1240          * Also:</h3>   <a
1241          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualServices">AWS
1242          * API Reference</a></p>
1243          *
1244          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1245          */
1246         virtual void ListVirtualServicesAsync(const Model::ListVirtualServicesRequest& request, const ListVirtualServicesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1247 
1248         /**
1249          * <p>Associates the specified tags to a resource with the specified
1250          * <code>resourceArn</code>. If existing tags on a resource aren't specified in the
1251          * request parameters, they aren't changed. When a resource is deleted, the tags
1252          * associated with that resource are also deleted.</p><p><h3>See Also:</h3>   <a
1253          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/TagResource">AWS
1254          * API Reference</a></p>
1255          */
1256         virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const;
1257 
1258         /**
1259          * <p>Associates the specified tags to a resource with the specified
1260          * <code>resourceArn</code>. If existing tags on a resource aren't specified in the
1261          * request parameters, they aren't changed. When a resource is deleted, the tags
1262          * associated with that resource are also deleted.</p><p><h3>See Also:</h3>   <a
1263          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/TagResource">AWS
1264          * API Reference</a></p>
1265          *
1266          * returns a future to the operation so that it can be executed in parallel to other requests.
1267          */
1268         virtual Model::TagResourceOutcomeCallable TagResourceCallable(const Model::TagResourceRequest& request) const;
1269 
1270         /**
1271          * <p>Associates the specified tags to a resource with the specified
1272          * <code>resourceArn</code>. If existing tags on a resource aren't specified in the
1273          * request parameters, they aren't changed. When a resource is deleted, the tags
1274          * associated with that resource are also deleted.</p><p><h3>See Also:</h3>   <a
1275          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/TagResource">AWS
1276          * API Reference</a></p>
1277          *
1278          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1279          */
1280         virtual void TagResourceAsync(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1281 
1282         /**
1283          * <p>Deletes specified tags from a resource.</p><p><h3>See Also:</h3>   <a
1284          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UntagResource">AWS
1285          * API Reference</a></p>
1286          */
1287         virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const;
1288 
1289         /**
1290          * <p>Deletes specified tags from a resource.</p><p><h3>See Also:</h3>   <a
1291          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UntagResource">AWS
1292          * API Reference</a></p>
1293          *
1294          * returns a future to the operation so that it can be executed in parallel to other requests.
1295          */
1296         virtual Model::UntagResourceOutcomeCallable UntagResourceCallable(const Model::UntagResourceRequest& request) const;
1297 
1298         /**
1299          * <p>Deletes specified tags from a resource.</p><p><h3>See Also:</h3>   <a
1300          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UntagResource">AWS
1301          * API Reference</a></p>
1302          *
1303          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1304          */
1305         virtual void UntagResourceAsync(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1306 
1307         /**
1308          * <p>Updates an existing gateway route that is associated to a specified virtual
1309          * gateway in a service mesh.</p><p><h3>See Also:</h3>   <a
1310          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateGatewayRoute">AWS
1311          * API Reference</a></p>
1312          */
1313         virtual Model::UpdateGatewayRouteOutcome UpdateGatewayRoute(const Model::UpdateGatewayRouteRequest& request) const;
1314 
1315         /**
1316          * <p>Updates an existing gateway route that is associated to a specified virtual
1317          * gateway in a service mesh.</p><p><h3>See Also:</h3>   <a
1318          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateGatewayRoute">AWS
1319          * API Reference</a></p>
1320          *
1321          * returns a future to the operation so that it can be executed in parallel to other requests.
1322          */
1323         virtual Model::UpdateGatewayRouteOutcomeCallable UpdateGatewayRouteCallable(const Model::UpdateGatewayRouteRequest& request) const;
1324 
1325         /**
1326          * <p>Updates an existing gateway route that is associated to a specified virtual
1327          * gateway in a service mesh.</p><p><h3>See Also:</h3>   <a
1328          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateGatewayRoute">AWS
1329          * API Reference</a></p>
1330          *
1331          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1332          */
1333         virtual void UpdateGatewayRouteAsync(const Model::UpdateGatewayRouteRequest& request, const UpdateGatewayRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1334 
1335         /**
1336          * <p>Updates an existing service mesh.</p><p><h3>See Also:</h3>   <a
1337          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateMesh">AWS
1338          * API Reference</a></p>
1339          */
1340         virtual Model::UpdateMeshOutcome UpdateMesh(const Model::UpdateMeshRequest& request) const;
1341 
1342         /**
1343          * <p>Updates an existing service mesh.</p><p><h3>See Also:</h3>   <a
1344          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateMesh">AWS
1345          * API Reference</a></p>
1346          *
1347          * returns a future to the operation so that it can be executed in parallel to other requests.
1348          */
1349         virtual Model::UpdateMeshOutcomeCallable UpdateMeshCallable(const Model::UpdateMeshRequest& request) const;
1350 
1351         /**
1352          * <p>Updates an existing service mesh.</p><p><h3>See Also:</h3>   <a
1353          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateMesh">AWS
1354          * API Reference</a></p>
1355          *
1356          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1357          */
1358         virtual void UpdateMeshAsync(const Model::UpdateMeshRequest& request, const UpdateMeshResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1359 
1360         /**
1361          * <p>Updates an existing route for a specified service mesh and virtual
1362          * router.</p><p><h3>See Also:</h3>   <a
1363          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateRoute">AWS
1364          * API Reference</a></p>
1365          */
1366         virtual Model::UpdateRouteOutcome UpdateRoute(const Model::UpdateRouteRequest& request) const;
1367 
1368         /**
1369          * <p>Updates an existing route for a specified service mesh and virtual
1370          * router.</p><p><h3>See Also:</h3>   <a
1371          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateRoute">AWS
1372          * API Reference</a></p>
1373          *
1374          * returns a future to the operation so that it can be executed in parallel to other requests.
1375          */
1376         virtual Model::UpdateRouteOutcomeCallable UpdateRouteCallable(const Model::UpdateRouteRequest& request) const;
1377 
1378         /**
1379          * <p>Updates an existing route for a specified service mesh and virtual
1380          * router.</p><p><h3>See Also:</h3>   <a
1381          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateRoute">AWS
1382          * API Reference</a></p>
1383          *
1384          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1385          */
1386         virtual void UpdateRouteAsync(const Model::UpdateRouteRequest& request, const UpdateRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1387 
1388         /**
1389          * <p>Updates an existing virtual gateway in a specified service
1390          * mesh.</p><p><h3>See Also:</h3>   <a
1391          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualGateway">AWS
1392          * API Reference</a></p>
1393          */
1394         virtual Model::UpdateVirtualGatewayOutcome UpdateVirtualGateway(const Model::UpdateVirtualGatewayRequest& request) const;
1395 
1396         /**
1397          * <p>Updates an existing virtual gateway in a specified service
1398          * mesh.</p><p><h3>See Also:</h3>   <a
1399          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualGateway">AWS
1400          * API Reference</a></p>
1401          *
1402          * returns a future to the operation so that it can be executed in parallel to other requests.
1403          */
1404         virtual Model::UpdateVirtualGatewayOutcomeCallable UpdateVirtualGatewayCallable(const Model::UpdateVirtualGatewayRequest& request) const;
1405 
1406         /**
1407          * <p>Updates an existing virtual gateway in a specified service
1408          * mesh.</p><p><h3>See Also:</h3>   <a
1409          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualGateway">AWS
1410          * API Reference</a></p>
1411          *
1412          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1413          */
1414         virtual void UpdateVirtualGatewayAsync(const Model::UpdateVirtualGatewayRequest& request, const UpdateVirtualGatewayResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1415 
1416         /**
1417          * <p>Updates an existing virtual node in a specified service mesh.</p><p><h3>See
1418          * Also:</h3>   <a
1419          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualNode">AWS
1420          * API Reference</a></p>
1421          */
1422         virtual Model::UpdateVirtualNodeOutcome UpdateVirtualNode(const Model::UpdateVirtualNodeRequest& request) const;
1423 
1424         /**
1425          * <p>Updates an existing virtual node in a specified service mesh.</p><p><h3>See
1426          * Also:</h3>   <a
1427          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualNode">AWS
1428          * API Reference</a></p>
1429          *
1430          * returns a future to the operation so that it can be executed in parallel to other requests.
1431          */
1432         virtual Model::UpdateVirtualNodeOutcomeCallable UpdateVirtualNodeCallable(const Model::UpdateVirtualNodeRequest& request) const;
1433 
1434         /**
1435          * <p>Updates an existing virtual node in a specified service mesh.</p><p><h3>See
1436          * Also:</h3>   <a
1437          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualNode">AWS
1438          * API Reference</a></p>
1439          *
1440          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1441          */
1442         virtual void UpdateVirtualNodeAsync(const Model::UpdateVirtualNodeRequest& request, const UpdateVirtualNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1443 
1444         /**
1445          * <p>Updates an existing virtual router in a specified service mesh.</p><p><h3>See
1446          * Also:</h3>   <a
1447          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualRouter">AWS
1448          * API Reference</a></p>
1449          */
1450         virtual Model::UpdateVirtualRouterOutcome UpdateVirtualRouter(const Model::UpdateVirtualRouterRequest& request) const;
1451 
1452         /**
1453          * <p>Updates an existing virtual router in a specified service mesh.</p><p><h3>See
1454          * Also:</h3>   <a
1455          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualRouter">AWS
1456          * API Reference</a></p>
1457          *
1458          * returns a future to the operation so that it can be executed in parallel to other requests.
1459          */
1460         virtual Model::UpdateVirtualRouterOutcomeCallable UpdateVirtualRouterCallable(const Model::UpdateVirtualRouterRequest& request) const;
1461 
1462         /**
1463          * <p>Updates an existing virtual router in a specified service mesh.</p><p><h3>See
1464          * Also:</h3>   <a
1465          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualRouter">AWS
1466          * API Reference</a></p>
1467          *
1468          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1469          */
1470         virtual void UpdateVirtualRouterAsync(const Model::UpdateVirtualRouterRequest& request, const UpdateVirtualRouterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1471 
1472         /**
1473          * <p>Updates an existing virtual service in a specified service
1474          * mesh.</p><p><h3>See Also:</h3>   <a
1475          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualService">AWS
1476          * API Reference</a></p>
1477          */
1478         virtual Model::UpdateVirtualServiceOutcome UpdateVirtualService(const Model::UpdateVirtualServiceRequest& request) const;
1479 
1480         /**
1481          * <p>Updates an existing virtual service in a specified service
1482          * mesh.</p><p><h3>See Also:</h3>   <a
1483          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualService">AWS
1484          * API Reference</a></p>
1485          *
1486          * returns a future to the operation so that it can be executed in parallel to other requests.
1487          */
1488         virtual Model::UpdateVirtualServiceOutcomeCallable UpdateVirtualServiceCallable(const Model::UpdateVirtualServiceRequest& request) const;
1489 
1490         /**
1491          * <p>Updates an existing virtual service in a specified service
1492          * mesh.</p><p><h3>See Also:</h3>   <a
1493          * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualService">AWS
1494          * API Reference</a></p>
1495          *
1496          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1497          */
1498         virtual void UpdateVirtualServiceAsync(const Model::UpdateVirtualServiceRequest& request, const UpdateVirtualServiceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1499 
1500 
1501       void OverrideEndpoint(const Aws::String& endpoint);
1502     private:
1503       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
1504         void CreateGatewayRouteAsyncHelper(const Model::CreateGatewayRouteRequest& request, const CreateGatewayRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1505         void CreateMeshAsyncHelper(const Model::CreateMeshRequest& request, const CreateMeshResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1506         void CreateRouteAsyncHelper(const Model::CreateRouteRequest& request, const CreateRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1507         void CreateVirtualGatewayAsyncHelper(const Model::CreateVirtualGatewayRequest& request, const CreateVirtualGatewayResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1508         void CreateVirtualNodeAsyncHelper(const Model::CreateVirtualNodeRequest& request, const CreateVirtualNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1509         void CreateVirtualRouterAsyncHelper(const Model::CreateVirtualRouterRequest& request, const CreateVirtualRouterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1510         void CreateVirtualServiceAsyncHelper(const Model::CreateVirtualServiceRequest& request, const CreateVirtualServiceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1511         void DeleteGatewayRouteAsyncHelper(const Model::DeleteGatewayRouteRequest& request, const DeleteGatewayRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1512         void DeleteMeshAsyncHelper(const Model::DeleteMeshRequest& request, const DeleteMeshResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1513         void DeleteRouteAsyncHelper(const Model::DeleteRouteRequest& request, const DeleteRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1514         void DeleteVirtualGatewayAsyncHelper(const Model::DeleteVirtualGatewayRequest& request, const DeleteVirtualGatewayResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1515         void DeleteVirtualNodeAsyncHelper(const Model::DeleteVirtualNodeRequest& request, const DeleteVirtualNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1516         void DeleteVirtualRouterAsyncHelper(const Model::DeleteVirtualRouterRequest& request, const DeleteVirtualRouterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1517         void DeleteVirtualServiceAsyncHelper(const Model::DeleteVirtualServiceRequest& request, const DeleteVirtualServiceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1518         void DescribeGatewayRouteAsyncHelper(const Model::DescribeGatewayRouteRequest& request, const DescribeGatewayRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1519         void DescribeMeshAsyncHelper(const Model::DescribeMeshRequest& request, const DescribeMeshResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1520         void DescribeRouteAsyncHelper(const Model::DescribeRouteRequest& request, const DescribeRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1521         void DescribeVirtualGatewayAsyncHelper(const Model::DescribeVirtualGatewayRequest& request, const DescribeVirtualGatewayResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1522         void DescribeVirtualNodeAsyncHelper(const Model::DescribeVirtualNodeRequest& request, const DescribeVirtualNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1523         void DescribeVirtualRouterAsyncHelper(const Model::DescribeVirtualRouterRequest& request, const DescribeVirtualRouterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1524         void DescribeVirtualServiceAsyncHelper(const Model::DescribeVirtualServiceRequest& request, const DescribeVirtualServiceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1525         void ListGatewayRoutesAsyncHelper(const Model::ListGatewayRoutesRequest& request, const ListGatewayRoutesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1526         void ListMeshesAsyncHelper(const Model::ListMeshesRequest& request, const ListMeshesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1527         void ListRoutesAsyncHelper(const Model::ListRoutesRequest& request, const ListRoutesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1528         void ListTagsForResourceAsyncHelper(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1529         void ListVirtualGatewaysAsyncHelper(const Model::ListVirtualGatewaysRequest& request, const ListVirtualGatewaysResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1530         void ListVirtualNodesAsyncHelper(const Model::ListVirtualNodesRequest& request, const ListVirtualNodesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1531         void ListVirtualRoutersAsyncHelper(const Model::ListVirtualRoutersRequest& request, const ListVirtualRoutersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1532         void ListVirtualServicesAsyncHelper(const Model::ListVirtualServicesRequest& request, const ListVirtualServicesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1533         void TagResourceAsyncHelper(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1534         void UntagResourceAsyncHelper(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1535         void UpdateGatewayRouteAsyncHelper(const Model::UpdateGatewayRouteRequest& request, const UpdateGatewayRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1536         void UpdateMeshAsyncHelper(const Model::UpdateMeshRequest& request, const UpdateMeshResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1537         void UpdateRouteAsyncHelper(const Model::UpdateRouteRequest& request, const UpdateRouteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1538         void UpdateVirtualGatewayAsyncHelper(const Model::UpdateVirtualGatewayRequest& request, const UpdateVirtualGatewayResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1539         void UpdateVirtualNodeAsyncHelper(const Model::UpdateVirtualNodeRequest& request, const UpdateVirtualNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1540         void UpdateVirtualRouterAsyncHelper(const Model::UpdateVirtualRouterRequest& request, const UpdateVirtualRouterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1541         void UpdateVirtualServiceAsyncHelper(const Model::UpdateVirtualServiceRequest& request, const UpdateVirtualServiceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1542 
1543       Aws::String m_uri;
1544       Aws::String m_configScheme;
1545       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
1546   };
1547 
1548 } // namespace AppMesh
1549 } // namespace Aws
1550