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/storagegateway/StorageGateway_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSVector.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 StorageGateway
22 {
23 namespace Model
24 {
25 
26   /**
27    * <p> Describes a bandwidth rate limit interval for a gateway. A bandwidth rate
28    * limit schedule consists of one or more bandwidth rate limit intervals. A
29    * bandwidth rate limit interval defines a period of time on one or more days of
30    * the week, during which bandwidth rate limits are specified for uploading,
31    * downloading, or both. </p><p><h3>See Also:</h3>   <a
32    * href="http://docs.aws.amazon.com/goto/WebAPI/storagegateway-2013-06-30/BandwidthRateLimitInterval">AWS
33    * API Reference</a></p>
34    */
35   class AWS_STORAGEGATEWAY_API BandwidthRateLimitInterval
36   {
37   public:
38     BandwidthRateLimitInterval();
39     BandwidthRateLimitInterval(Aws::Utils::Json::JsonView jsonValue);
40     BandwidthRateLimitInterval& operator=(Aws::Utils::Json::JsonView jsonValue);
41     Aws::Utils::Json::JsonValue Jsonize() const;
42 
43 
44     /**
45      * <p> The hour of the day to start the bandwidth rate limit interval. </p>
46      */
GetStartHourOfDay()47     inline int GetStartHourOfDay() const{ return m_startHourOfDay; }
48 
49     /**
50      * <p> The hour of the day to start the bandwidth rate limit interval. </p>
51      */
StartHourOfDayHasBeenSet()52     inline bool StartHourOfDayHasBeenSet() const { return m_startHourOfDayHasBeenSet; }
53 
54     /**
55      * <p> The hour of the day to start the bandwidth rate limit interval. </p>
56      */
SetStartHourOfDay(int value)57     inline void SetStartHourOfDay(int value) { m_startHourOfDayHasBeenSet = true; m_startHourOfDay = value; }
58 
59     /**
60      * <p> The hour of the day to start the bandwidth rate limit interval. </p>
61      */
WithStartHourOfDay(int value)62     inline BandwidthRateLimitInterval& WithStartHourOfDay(int value) { SetStartHourOfDay(value); return *this;}
63 
64 
65     /**
66      * <p> The minute of the hour to start the bandwidth rate limit interval. The
67      * interval begins at the start of that minute. To begin an interval exactly at the
68      * start of the hour, use the value <code>0</code>. </p>
69      */
GetStartMinuteOfHour()70     inline int GetStartMinuteOfHour() const{ return m_startMinuteOfHour; }
71 
72     /**
73      * <p> The minute of the hour to start the bandwidth rate limit interval. The
74      * interval begins at the start of that minute. To begin an interval exactly at the
75      * start of the hour, use the value <code>0</code>. </p>
76      */
StartMinuteOfHourHasBeenSet()77     inline bool StartMinuteOfHourHasBeenSet() const { return m_startMinuteOfHourHasBeenSet; }
78 
79     /**
80      * <p> The minute of the hour to start the bandwidth rate limit interval. The
81      * interval begins at the start of that minute. To begin an interval exactly at the
82      * start of the hour, use the value <code>0</code>. </p>
83      */
SetStartMinuteOfHour(int value)84     inline void SetStartMinuteOfHour(int value) { m_startMinuteOfHourHasBeenSet = true; m_startMinuteOfHour = value; }
85 
86     /**
87      * <p> The minute of the hour to start the bandwidth rate limit interval. The
88      * interval begins at the start of that minute. To begin an interval exactly at the
89      * start of the hour, use the value <code>0</code>. </p>
90      */
WithStartMinuteOfHour(int value)91     inline BandwidthRateLimitInterval& WithStartMinuteOfHour(int value) { SetStartMinuteOfHour(value); return *this;}
92 
93 
94     /**
95      * <p> The hour of the day to end the bandwidth rate limit interval. </p>
96      */
GetEndHourOfDay()97     inline int GetEndHourOfDay() const{ return m_endHourOfDay; }
98 
99     /**
100      * <p> The hour of the day to end the bandwidth rate limit interval. </p>
101      */
EndHourOfDayHasBeenSet()102     inline bool EndHourOfDayHasBeenSet() const { return m_endHourOfDayHasBeenSet; }
103 
104     /**
105      * <p> The hour of the day to end the bandwidth rate limit interval. </p>
106      */
SetEndHourOfDay(int value)107     inline void SetEndHourOfDay(int value) { m_endHourOfDayHasBeenSet = true; m_endHourOfDay = value; }
108 
109     /**
110      * <p> The hour of the day to end the bandwidth rate limit interval. </p>
111      */
WithEndHourOfDay(int value)112     inline BandwidthRateLimitInterval& WithEndHourOfDay(int value) { SetEndHourOfDay(value); return *this;}
113 
114 
115     /**
116      * <p> The minute of the hour to end the bandwidth rate limit interval. </p>
117      *  <p> The bandwidth rate limit interval ends at the end of the minute.
118      * To end an interval at the end of an hour, use the value <code>59</code>. </p>
119      *
120      */
GetEndMinuteOfHour()121     inline int GetEndMinuteOfHour() const{ return m_endMinuteOfHour; }
122 
123     /**
124      * <p> The minute of the hour to end the bandwidth rate limit interval. </p>
125      *  <p> The bandwidth rate limit interval ends at the end of the minute.
126      * To end an interval at the end of an hour, use the value <code>59</code>. </p>
127      *
128      */
EndMinuteOfHourHasBeenSet()129     inline bool EndMinuteOfHourHasBeenSet() const { return m_endMinuteOfHourHasBeenSet; }
130 
131     /**
132      * <p> The minute of the hour to end the bandwidth rate limit interval. </p>
133      *  <p> The bandwidth rate limit interval ends at the end of the minute.
134      * To end an interval at the end of an hour, use the value <code>59</code>. </p>
135      *
136      */
SetEndMinuteOfHour(int value)137     inline void SetEndMinuteOfHour(int value) { m_endMinuteOfHourHasBeenSet = true; m_endMinuteOfHour = value; }
138 
139     /**
140      * <p> The minute of the hour to end the bandwidth rate limit interval. </p>
141      *  <p> The bandwidth rate limit interval ends at the end of the minute.
142      * To end an interval at the end of an hour, use the value <code>59</code>. </p>
143      *
144      */
WithEndMinuteOfHour(int value)145     inline BandwidthRateLimitInterval& WithEndMinuteOfHour(int value) { SetEndMinuteOfHour(value); return *this;}
146 
147 
148     /**
149      * <p> The days of the week component of the bandwidth rate limit interval,
150      * represented as ordinal numbers from 0 to 6, where 0 represents Sunday and 6
151      * represents Saturday. </p>
152      */
GetDaysOfWeek()153     inline const Aws::Vector<int>& GetDaysOfWeek() const{ return m_daysOfWeek; }
154 
155     /**
156      * <p> The days of the week component of the bandwidth rate limit interval,
157      * represented as ordinal numbers from 0 to 6, where 0 represents Sunday and 6
158      * represents Saturday. </p>
159      */
DaysOfWeekHasBeenSet()160     inline bool DaysOfWeekHasBeenSet() const { return m_daysOfWeekHasBeenSet; }
161 
162     /**
163      * <p> The days of the week component of the bandwidth rate limit interval,
164      * represented as ordinal numbers from 0 to 6, where 0 represents Sunday and 6
165      * represents Saturday. </p>
166      */
SetDaysOfWeek(const Aws::Vector<int> & value)167     inline void SetDaysOfWeek(const Aws::Vector<int>& value) { m_daysOfWeekHasBeenSet = true; m_daysOfWeek = value; }
168 
169     /**
170      * <p> The days of the week component of the bandwidth rate limit interval,
171      * represented as ordinal numbers from 0 to 6, where 0 represents Sunday and 6
172      * represents Saturday. </p>
173      */
SetDaysOfWeek(Aws::Vector<int> && value)174     inline void SetDaysOfWeek(Aws::Vector<int>&& value) { m_daysOfWeekHasBeenSet = true; m_daysOfWeek = std::move(value); }
175 
176     /**
177      * <p> The days of the week component of the bandwidth rate limit interval,
178      * represented as ordinal numbers from 0 to 6, where 0 represents Sunday and 6
179      * represents Saturday. </p>
180      */
WithDaysOfWeek(const Aws::Vector<int> & value)181     inline BandwidthRateLimitInterval& WithDaysOfWeek(const Aws::Vector<int>& value) { SetDaysOfWeek(value); return *this;}
182 
183     /**
184      * <p> The days of the week component of the bandwidth rate limit interval,
185      * represented as ordinal numbers from 0 to 6, where 0 represents Sunday and 6
186      * represents Saturday. </p>
187      */
WithDaysOfWeek(Aws::Vector<int> && value)188     inline BandwidthRateLimitInterval& WithDaysOfWeek(Aws::Vector<int>&& value) { SetDaysOfWeek(std::move(value)); return *this;}
189 
190     /**
191      * <p> The days of the week component of the bandwidth rate limit interval,
192      * represented as ordinal numbers from 0 to 6, where 0 represents Sunday and 6
193      * represents Saturday. </p>
194      */
AddDaysOfWeek(int value)195     inline BandwidthRateLimitInterval& AddDaysOfWeek(int value) { m_daysOfWeekHasBeenSet = true; m_daysOfWeek.push_back(value); return *this; }
196 
197 
198     /**
199      * <p> The average upload rate limit component of the bandwidth rate limit
200      * interval, in bits per second. This field does not appear in the response if the
201      * upload rate limit is not set. </p>
202      */
GetAverageUploadRateLimitInBitsPerSec()203     inline long long GetAverageUploadRateLimitInBitsPerSec() const{ return m_averageUploadRateLimitInBitsPerSec; }
204 
205     /**
206      * <p> The average upload rate limit component of the bandwidth rate limit
207      * interval, in bits per second. This field does not appear in the response if the
208      * upload rate limit is not set. </p>
209      */
AverageUploadRateLimitInBitsPerSecHasBeenSet()210     inline bool AverageUploadRateLimitInBitsPerSecHasBeenSet() const { return m_averageUploadRateLimitInBitsPerSecHasBeenSet; }
211 
212     /**
213      * <p> The average upload rate limit component of the bandwidth rate limit
214      * interval, in bits per second. This field does not appear in the response if the
215      * upload rate limit is not set. </p>
216      */
SetAverageUploadRateLimitInBitsPerSec(long long value)217     inline void SetAverageUploadRateLimitInBitsPerSec(long long value) { m_averageUploadRateLimitInBitsPerSecHasBeenSet = true; m_averageUploadRateLimitInBitsPerSec = value; }
218 
219     /**
220      * <p> The average upload rate limit component of the bandwidth rate limit
221      * interval, in bits per second. This field does not appear in the response if the
222      * upload rate limit is not set. </p>
223      */
WithAverageUploadRateLimitInBitsPerSec(long long value)224     inline BandwidthRateLimitInterval& WithAverageUploadRateLimitInBitsPerSec(long long value) { SetAverageUploadRateLimitInBitsPerSec(value); return *this;}
225 
226 
227     /**
228      * <p> The average download rate limit component of the bandwidth rate limit
229      * interval, in bits per second. This field does not appear in the response if the
230      * download rate limit is not set. </p>
231      */
GetAverageDownloadRateLimitInBitsPerSec()232     inline long long GetAverageDownloadRateLimitInBitsPerSec() const{ return m_averageDownloadRateLimitInBitsPerSec; }
233 
234     /**
235      * <p> The average download rate limit component of the bandwidth rate limit
236      * interval, in bits per second. This field does not appear in the response if the
237      * download rate limit is not set. </p>
238      */
AverageDownloadRateLimitInBitsPerSecHasBeenSet()239     inline bool AverageDownloadRateLimitInBitsPerSecHasBeenSet() const { return m_averageDownloadRateLimitInBitsPerSecHasBeenSet; }
240 
241     /**
242      * <p> The average download rate limit component of the bandwidth rate limit
243      * interval, in bits per second. This field does not appear in the response if the
244      * download rate limit is not set. </p>
245      */
SetAverageDownloadRateLimitInBitsPerSec(long long value)246     inline void SetAverageDownloadRateLimitInBitsPerSec(long long value) { m_averageDownloadRateLimitInBitsPerSecHasBeenSet = true; m_averageDownloadRateLimitInBitsPerSec = value; }
247 
248     /**
249      * <p> The average download rate limit component of the bandwidth rate limit
250      * interval, in bits per second. This field does not appear in the response if the
251      * download rate limit is not set. </p>
252      */
WithAverageDownloadRateLimitInBitsPerSec(long long value)253     inline BandwidthRateLimitInterval& WithAverageDownloadRateLimitInBitsPerSec(long long value) { SetAverageDownloadRateLimitInBitsPerSec(value); return *this;}
254 
255   private:
256 
257     int m_startHourOfDay;
258     bool m_startHourOfDayHasBeenSet;
259 
260     int m_startMinuteOfHour;
261     bool m_startMinuteOfHourHasBeenSet;
262 
263     int m_endHourOfDay;
264     bool m_endHourOfDayHasBeenSet;
265 
266     int m_endMinuteOfHour;
267     bool m_endMinuteOfHourHasBeenSet;
268 
269     Aws::Vector<int> m_daysOfWeek;
270     bool m_daysOfWeekHasBeenSet;
271 
272     long long m_averageUploadRateLimitInBitsPerSec;
273     bool m_averageUploadRateLimitInBitsPerSecHasBeenSet;
274 
275     long long m_averageDownloadRateLimitInBitsPerSec;
276     bool m_averageDownloadRateLimitInBitsPerSecHasBeenSet;
277   };
278 
279 } // namespace Model
280 } // namespace StorageGateway
281 } // namespace Aws
282