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/model/VirtualGatewayBackendDefaults.h>
9 #include <aws/core/utils/memory/stl/AWSVector.h>
10 #include <aws/appmesh/model/VirtualGatewayLogging.h>
11 #include <aws/appmesh/model/VirtualGatewayListener.h>
12 #include <utility>
13 
14 namespace Aws
15 {
16 namespace Utils
17 {
18 namespace Json
19 {
20   class JsonValue;
21   class JsonView;
22 } // namespace Json
23 } // namespace Utils
24 namespace AppMesh
25 {
26 namespace Model
27 {
28 
29   /**
30    * <p>An object that represents the specification of a service mesh
31    * resource.</p><p><h3>See Also:</h3>   <a
32    * href="http://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/VirtualGatewaySpec">AWS
33    * API Reference</a></p>
34    */
35   class AWS_APPMESH_API VirtualGatewaySpec
36   {
37   public:
38     VirtualGatewaySpec();
39     VirtualGatewaySpec(Aws::Utils::Json::JsonView jsonValue);
40     VirtualGatewaySpec& operator=(Aws::Utils::Json::JsonView jsonValue);
41     Aws::Utils::Json::JsonValue Jsonize() const;
42 
43 
44     /**
45      * <p>A reference to an object that represents the defaults for backends.</p>
46      */
GetBackendDefaults()47     inline const VirtualGatewayBackendDefaults& GetBackendDefaults() const{ return m_backendDefaults; }
48 
49     /**
50      * <p>A reference to an object that represents the defaults for backends.</p>
51      */
BackendDefaultsHasBeenSet()52     inline bool BackendDefaultsHasBeenSet() const { return m_backendDefaultsHasBeenSet; }
53 
54     /**
55      * <p>A reference to an object that represents the defaults for backends.</p>
56      */
SetBackendDefaults(const VirtualGatewayBackendDefaults & value)57     inline void SetBackendDefaults(const VirtualGatewayBackendDefaults& value) { m_backendDefaultsHasBeenSet = true; m_backendDefaults = value; }
58 
59     /**
60      * <p>A reference to an object that represents the defaults for backends.</p>
61      */
SetBackendDefaults(VirtualGatewayBackendDefaults && value)62     inline void SetBackendDefaults(VirtualGatewayBackendDefaults&& value) { m_backendDefaultsHasBeenSet = true; m_backendDefaults = std::move(value); }
63 
64     /**
65      * <p>A reference to an object that represents the defaults for backends.</p>
66      */
WithBackendDefaults(const VirtualGatewayBackendDefaults & value)67     inline VirtualGatewaySpec& WithBackendDefaults(const VirtualGatewayBackendDefaults& value) { SetBackendDefaults(value); return *this;}
68 
69     /**
70      * <p>A reference to an object that represents the defaults for backends.</p>
71      */
WithBackendDefaults(VirtualGatewayBackendDefaults && value)72     inline VirtualGatewaySpec& WithBackendDefaults(VirtualGatewayBackendDefaults&& value) { SetBackendDefaults(std::move(value)); return *this;}
73 
74 
75     /**
76      * <p>The listeners that the mesh endpoint is expected to receive inbound traffic
77      * from. You can specify one listener.</p>
78      */
GetListeners()79     inline const Aws::Vector<VirtualGatewayListener>& GetListeners() const{ return m_listeners; }
80 
81     /**
82      * <p>The listeners that the mesh endpoint is expected to receive inbound traffic
83      * from. You can specify one listener.</p>
84      */
ListenersHasBeenSet()85     inline bool ListenersHasBeenSet() const { return m_listenersHasBeenSet; }
86 
87     /**
88      * <p>The listeners that the mesh endpoint is expected to receive inbound traffic
89      * from. You can specify one listener.</p>
90      */
SetListeners(const Aws::Vector<VirtualGatewayListener> & value)91     inline void SetListeners(const Aws::Vector<VirtualGatewayListener>& value) { m_listenersHasBeenSet = true; m_listeners = value; }
92 
93     /**
94      * <p>The listeners that the mesh endpoint is expected to receive inbound traffic
95      * from. You can specify one listener.</p>
96      */
SetListeners(Aws::Vector<VirtualGatewayListener> && value)97     inline void SetListeners(Aws::Vector<VirtualGatewayListener>&& value) { m_listenersHasBeenSet = true; m_listeners = std::move(value); }
98 
99     /**
100      * <p>The listeners that the mesh endpoint is expected to receive inbound traffic
101      * from. You can specify one listener.</p>
102      */
WithListeners(const Aws::Vector<VirtualGatewayListener> & value)103     inline VirtualGatewaySpec& WithListeners(const Aws::Vector<VirtualGatewayListener>& value) { SetListeners(value); return *this;}
104 
105     /**
106      * <p>The listeners that the mesh endpoint is expected to receive inbound traffic
107      * from. You can specify one listener.</p>
108      */
WithListeners(Aws::Vector<VirtualGatewayListener> && value)109     inline VirtualGatewaySpec& WithListeners(Aws::Vector<VirtualGatewayListener>&& value) { SetListeners(std::move(value)); return *this;}
110 
111     /**
112      * <p>The listeners that the mesh endpoint is expected to receive inbound traffic
113      * from. You can specify one listener.</p>
114      */
AddListeners(const VirtualGatewayListener & value)115     inline VirtualGatewaySpec& AddListeners(const VirtualGatewayListener& value) { m_listenersHasBeenSet = true; m_listeners.push_back(value); return *this; }
116 
117     /**
118      * <p>The listeners that the mesh endpoint is expected to receive inbound traffic
119      * from. You can specify one listener.</p>
120      */
AddListeners(VirtualGatewayListener && value)121     inline VirtualGatewaySpec& AddListeners(VirtualGatewayListener&& value) { m_listenersHasBeenSet = true; m_listeners.push_back(std::move(value)); return *this; }
122 
123 
124 
GetLogging()125     inline const VirtualGatewayLogging& GetLogging() const{ return m_logging; }
126 
127 
LoggingHasBeenSet()128     inline bool LoggingHasBeenSet() const { return m_loggingHasBeenSet; }
129 
130 
SetLogging(const VirtualGatewayLogging & value)131     inline void SetLogging(const VirtualGatewayLogging& value) { m_loggingHasBeenSet = true; m_logging = value; }
132 
133 
SetLogging(VirtualGatewayLogging && value)134     inline void SetLogging(VirtualGatewayLogging&& value) { m_loggingHasBeenSet = true; m_logging = std::move(value); }
135 
136 
WithLogging(const VirtualGatewayLogging & value)137     inline VirtualGatewaySpec& WithLogging(const VirtualGatewayLogging& value) { SetLogging(value); return *this;}
138 
139 
WithLogging(VirtualGatewayLogging && value)140     inline VirtualGatewaySpec& WithLogging(VirtualGatewayLogging&& value) { SetLogging(std::move(value)); return *this;}
141 
142   private:
143 
144     VirtualGatewayBackendDefaults m_backendDefaults;
145     bool m_backendDefaultsHasBeenSet;
146 
147     Aws::Vector<VirtualGatewayListener> m_listeners;
148     bool m_listenersHasBeenSet;
149 
150     VirtualGatewayLogging m_logging;
151     bool m_loggingHasBeenSet;
152   };
153 
154 } // namespace Model
155 } // namespace AppMesh
156 } // namespace Aws
157