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/shield/Shield_EXPORTS.h>
8 #include <aws/shield/model/AttackVolumeStatistics.h>
9 #include <utility>
10 
11 namespace Aws
12 {
13 namespace Utils
14 {
15 namespace Json
16 {
17   class JsonValue;
18   class JsonView;
19 } // namespace Json
20 } // namespace Utils
21 namespace Shield
22 {
23 namespace Model
24 {
25 
26   /**
27    * <p>Information about the volume of attacks during the time period, included in
28    * an <a>AttackStatisticsDataItem</a>. If the accompanying <code>AttackCount</code>
29    * in the statistics object is zero, this setting might be empty.</p><p><h3>See
30    * Also:</h3>   <a
31    * href="http://docs.aws.amazon.com/goto/WebAPI/shield-2016-06-02/AttackVolume">AWS
32    * API Reference</a></p>
33    */
34   class AWS_SHIELD_API AttackVolume
35   {
36   public:
37     AttackVolume();
38     AttackVolume(Aws::Utils::Json::JsonView jsonValue);
39     AttackVolume& operator=(Aws::Utils::Json::JsonView jsonValue);
40     Aws::Utils::Json::JsonValue Jsonize() const;
41 
42 
43     /**
44      * <p>A statistics object that uses bits per second as the unit. This is included
45      * for network level attacks. </p>
46      */
GetBitsPerSecond()47     inline const AttackVolumeStatistics& GetBitsPerSecond() const{ return m_bitsPerSecond; }
48 
49     /**
50      * <p>A statistics object that uses bits per second as the unit. This is included
51      * for network level attacks. </p>
52      */
BitsPerSecondHasBeenSet()53     inline bool BitsPerSecondHasBeenSet() const { return m_bitsPerSecondHasBeenSet; }
54 
55     /**
56      * <p>A statistics object that uses bits per second as the unit. This is included
57      * for network level attacks. </p>
58      */
SetBitsPerSecond(const AttackVolumeStatistics & value)59     inline void SetBitsPerSecond(const AttackVolumeStatistics& value) { m_bitsPerSecondHasBeenSet = true; m_bitsPerSecond = value; }
60 
61     /**
62      * <p>A statistics object that uses bits per second as the unit. This is included
63      * for network level attacks. </p>
64      */
SetBitsPerSecond(AttackVolumeStatistics && value)65     inline void SetBitsPerSecond(AttackVolumeStatistics&& value) { m_bitsPerSecondHasBeenSet = true; m_bitsPerSecond = std::move(value); }
66 
67     /**
68      * <p>A statistics object that uses bits per second as the unit. This is included
69      * for network level attacks. </p>
70      */
WithBitsPerSecond(const AttackVolumeStatistics & value)71     inline AttackVolume& WithBitsPerSecond(const AttackVolumeStatistics& value) { SetBitsPerSecond(value); return *this;}
72 
73     /**
74      * <p>A statistics object that uses bits per second as the unit. This is included
75      * for network level attacks. </p>
76      */
WithBitsPerSecond(AttackVolumeStatistics && value)77     inline AttackVolume& WithBitsPerSecond(AttackVolumeStatistics&& value) { SetBitsPerSecond(std::move(value)); return *this;}
78 
79 
80     /**
81      * <p>A statistics object that uses packets per second as the unit. This is
82      * included for network level attacks. </p>
83      */
GetPacketsPerSecond()84     inline const AttackVolumeStatistics& GetPacketsPerSecond() const{ return m_packetsPerSecond; }
85 
86     /**
87      * <p>A statistics object that uses packets per second as the unit. This is
88      * included for network level attacks. </p>
89      */
PacketsPerSecondHasBeenSet()90     inline bool PacketsPerSecondHasBeenSet() const { return m_packetsPerSecondHasBeenSet; }
91 
92     /**
93      * <p>A statistics object that uses packets per second as the unit. This is
94      * included for network level attacks. </p>
95      */
SetPacketsPerSecond(const AttackVolumeStatistics & value)96     inline void SetPacketsPerSecond(const AttackVolumeStatistics& value) { m_packetsPerSecondHasBeenSet = true; m_packetsPerSecond = value; }
97 
98     /**
99      * <p>A statistics object that uses packets per second as the unit. This is
100      * included for network level attacks. </p>
101      */
SetPacketsPerSecond(AttackVolumeStatistics && value)102     inline void SetPacketsPerSecond(AttackVolumeStatistics&& value) { m_packetsPerSecondHasBeenSet = true; m_packetsPerSecond = std::move(value); }
103 
104     /**
105      * <p>A statistics object that uses packets per second as the unit. This is
106      * included for network level attacks. </p>
107      */
WithPacketsPerSecond(const AttackVolumeStatistics & value)108     inline AttackVolume& WithPacketsPerSecond(const AttackVolumeStatistics& value) { SetPacketsPerSecond(value); return *this;}
109 
110     /**
111      * <p>A statistics object that uses packets per second as the unit. This is
112      * included for network level attacks. </p>
113      */
WithPacketsPerSecond(AttackVolumeStatistics && value)114     inline AttackVolume& WithPacketsPerSecond(AttackVolumeStatistics&& value) { SetPacketsPerSecond(std::move(value)); return *this;}
115 
116 
117     /**
118      * <p>A statistics object that uses requests per second as the unit. This is
119      * included for application level attacks, and is only available for accounts that
120      * are subscribed to Shield Advanced.</p>
121      */
GetRequestsPerSecond()122     inline const AttackVolumeStatistics& GetRequestsPerSecond() const{ return m_requestsPerSecond; }
123 
124     /**
125      * <p>A statistics object that uses requests per second as the unit. This is
126      * included for application level attacks, and is only available for accounts that
127      * are subscribed to Shield Advanced.</p>
128      */
RequestsPerSecondHasBeenSet()129     inline bool RequestsPerSecondHasBeenSet() const { return m_requestsPerSecondHasBeenSet; }
130 
131     /**
132      * <p>A statistics object that uses requests per second as the unit. This is
133      * included for application level attacks, and is only available for accounts that
134      * are subscribed to Shield Advanced.</p>
135      */
SetRequestsPerSecond(const AttackVolumeStatistics & value)136     inline void SetRequestsPerSecond(const AttackVolumeStatistics& value) { m_requestsPerSecondHasBeenSet = true; m_requestsPerSecond = value; }
137 
138     /**
139      * <p>A statistics object that uses requests per second as the unit. This is
140      * included for application level attacks, and is only available for accounts that
141      * are subscribed to Shield Advanced.</p>
142      */
SetRequestsPerSecond(AttackVolumeStatistics && value)143     inline void SetRequestsPerSecond(AttackVolumeStatistics&& value) { m_requestsPerSecondHasBeenSet = true; m_requestsPerSecond = std::move(value); }
144 
145     /**
146      * <p>A statistics object that uses requests per second as the unit. This is
147      * included for application level attacks, and is only available for accounts that
148      * are subscribed to Shield Advanced.</p>
149      */
WithRequestsPerSecond(const AttackVolumeStatistics & value)150     inline AttackVolume& WithRequestsPerSecond(const AttackVolumeStatistics& value) { SetRequestsPerSecond(value); return *this;}
151 
152     /**
153      * <p>A statistics object that uses requests per second as the unit. This is
154      * included for application level attacks, and is only available for accounts that
155      * are subscribed to Shield Advanced.</p>
156      */
WithRequestsPerSecond(AttackVolumeStatistics && value)157     inline AttackVolume& WithRequestsPerSecond(AttackVolumeStatistics&& value) { SetRequestsPerSecond(std::move(value)); return *this;}
158 
159   private:
160 
161     AttackVolumeStatistics m_bitsPerSecond;
162     bool m_bitsPerSecondHasBeenSet;
163 
164     AttackVolumeStatistics m_packetsPerSecond;
165     bool m_packetsPerSecondHasBeenSet;
166 
167     AttackVolumeStatistics m_requestsPerSecond;
168     bool m_requestsPerSecondHasBeenSet;
169   };
170 
171 } // namespace Model
172 } // namespace Shield
173 } // namespace Aws
174