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/ec2/EC2_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSStreamFwd.h>
9 #include <aws/ec2/model/MonitoringState.h>
10 #include <utility>
11 
12 namespace Aws
13 {
14 namespace Utils
15 {
16 namespace Xml
17 {
18   class XmlNode;
19 } // namespace Xml
20 } // namespace Utils
21 namespace EC2
22 {
23 namespace Model
24 {
25 
26   /**
27    * <p>Describes the monitoring of an instance.</p><p><h3>See Also:</h3>   <a
28    * href="http://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Monitoring">AWS API
29    * Reference</a></p>
30    */
31   class AWS_EC2_API Monitoring
32   {
33   public:
34     Monitoring();
35     Monitoring(const Aws::Utils::Xml::XmlNode& xmlNode);
36     Monitoring& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
37 
38     void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
39     void OutputToStream(Aws::OStream& oStream, const char* location) const;
40 
41 
42     /**
43      * <p>Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring
44      * is enabled.</p>
45      */
GetState()46     inline const MonitoringState& GetState() const{ return m_state; }
47 
48     /**
49      * <p>Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring
50      * is enabled.</p>
51      */
StateHasBeenSet()52     inline bool StateHasBeenSet() const { return m_stateHasBeenSet; }
53 
54     /**
55      * <p>Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring
56      * is enabled.</p>
57      */
SetState(const MonitoringState & value)58     inline void SetState(const MonitoringState& value) { m_stateHasBeenSet = true; m_state = value; }
59 
60     /**
61      * <p>Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring
62      * is enabled.</p>
63      */
SetState(MonitoringState && value)64     inline void SetState(MonitoringState&& value) { m_stateHasBeenSet = true; m_state = std::move(value); }
65 
66     /**
67      * <p>Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring
68      * is enabled.</p>
69      */
WithState(const MonitoringState & value)70     inline Monitoring& WithState(const MonitoringState& value) { SetState(value); return *this;}
71 
72     /**
73      * <p>Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring
74      * is enabled.</p>
75      */
WithState(MonitoringState && value)76     inline Monitoring& WithState(MonitoringState&& value) { SetState(std::move(value)); return *this;}
77 
78   private:
79 
80     MonitoringState m_state;
81     bool m_stateHasBeenSet;
82   };
83 
84 } // namespace Model
85 } // namespace EC2
86 } // namespace Aws
87