blob: d037dbc51b187c247383d9f540b810db78d2a85a [file] [log] [blame]
Sean Condon0e89bda2017-03-21 14:23:19 +00001/*
2 * Copyright 2017-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.incubator.net.l2monitoring.soam.delay;
17
18import java.time.Duration;
19import java.util.ArrayList;
20import java.util.Collection;
21
22import org.onosproject.incubator.net.l2monitoring.soam.SoamId;
23
24/**
25 * The default implementation of DelayMeasurementThreshold.
Sean Condon3a1efef2018-02-24 13:16:03 +000026 * {@link DelayMeasurementThreshold}.
Sean Condon0e89bda2017-03-21 14:23:19 +000027 */
28public final class DefaultDelayMeasurementThreshold
29 implements DelayMeasurementThreshold {
30
31 private final SoamId threshId;
32 private final Collection<ThresholdOption> thresholdsEnabled;
33 private final Duration measuredFrameDelayTwoWay;
34 private final Duration maxFrameDelayTwoWay;
35 private final Duration averageFrameDelayTwoWay;
36 private final Duration measuredInterFrameDelayVariationTwoWay;
37 private final Duration maxInterFrameDelayVariationTwoWay;
38 private final Duration averageInterFrameDelayVariationTwoWay;
39 private final Duration maxFrameDelayRangeTwoWay;
40 private final Duration averageFrameDelayRangeTwoWay;
41 private final Duration measuredFrameDelayForward;
42 private final Duration maxFrameDelayForward;
43 private final Duration averageFrameDelayForward;
44 private final Duration measuredInterFrameDelayVariationForward;
45 private final Duration maxInterFrameDelayVariationForward;
46 private final Duration averageInterFrameDelayVariationForward;
47 private final Duration maxFrameDelayRangeForward;
48 private final Duration averageFrameDelayRangeForward;
49 private final Duration measuredFrameDelayBackward;
50 private final Duration maxFrameDelayBackward;
51 private final Duration averageFrameDelayBackward;
52 private final Duration measuredInterFrameDelayVariationBackward;
53 private final Duration maxInterFrameDelayVariationBackward;
54 private final Duration averageInterFrameDelayVariationBackward;
55 private final Duration maxFrameDelayRangeBackward;
56 private final Duration averageFrameDelayRangeBackward;
57
58 private DefaultDelayMeasurementThreshold(DefaultDmThresholdBuilder builder) {
59 this.threshId = builder.threshId;
60 this.thresholdsEnabled = builder.thresholdsEnabled;
61 this.measuredFrameDelayTwoWay = builder.measuredFrameDelayTwoWay;
62 this.maxFrameDelayTwoWay = builder.maxFrameDelayTwoWay;
63 this.averageFrameDelayTwoWay = builder.averageFrameDelayTwoWay;
64 this.measuredInterFrameDelayVariationTwoWay =
65 builder.measuredInterFrameDelayVariationTwoWay;
66 this.maxInterFrameDelayVariationTwoWay =
67 builder.maxInterFrameDelayVariationTwoWay;
68 this.averageInterFrameDelayVariationTwoWay =
69 builder.averageInterFrameDelayVariationTwoWay;
70 this.maxFrameDelayRangeTwoWay = builder.maxFrameDelayRangeTwoWay;
71 this.averageFrameDelayRangeTwoWay = builder.averageFrameDelayRangeTwoWay;
72 this.measuredFrameDelayForward = builder.measuredFrameDelayForward;
73 this.maxFrameDelayForward = builder.maxFrameDelayForward;
74 this.averageFrameDelayForward = builder.averageFrameDelayForward;
75 this.measuredInterFrameDelayVariationForward =
76 builder.measuredInterFrameDelayVariationForward;
77 this.maxInterFrameDelayVariationForward =
78 builder.maxInterFrameDelayVariationForward;
79 this.averageInterFrameDelayVariationForward =
80 builder.averageInterFrameDelayVariationForward;
81 this.maxFrameDelayRangeForward = builder.maxFrameDelayRangeForward;
82 this.averageFrameDelayRangeForward = builder.averageFrameDelayRangeForward;
83 this.measuredFrameDelayBackward = builder.measuredFrameDelayBackward;
84 this.maxFrameDelayBackward = builder.maxFrameDelayBackward;
85 this.averageFrameDelayBackward = builder.averageFrameDelayBackward;
86 this.measuredInterFrameDelayVariationBackward =
87 builder.measuredInterFrameDelayVariationBackward;
88 this.maxInterFrameDelayVariationBackward =
89 builder.maxInterFrameDelayVariationBackward;
90 this.averageInterFrameDelayVariationBackward =
91 builder.averageInterFrameDelayVariationBackward;
92 this.maxFrameDelayRangeBackward =
93 builder.maxFrameDelayRangeBackward;
94 this.averageFrameDelayRangeBackward =
95 builder.averageFrameDelayRangeBackward;
96 }
97
98 @Override
99 public SoamId threshId() {
100 return threshId;
101 }
102
103 @Override
104 public Collection<ThresholdOption> thresholdsEnabled() {
105 return thresholdsEnabled;
106 }
107
108 @Override
109 public Duration measuredFrameDelayTwoWay() {
110 return measuredFrameDelayTwoWay;
111 }
112
113 @Override
114 public Duration maxFrameDelayTwoWay() {
115 return maxFrameDelayTwoWay;
116 }
117
118 @Override
119 public Duration averageFrameDelayTwoWay() {
120 return averageFrameDelayTwoWay;
121 }
122
123 @Override
124 public Duration measuredInterFrameDelayVariationTwoWay() {
125 return measuredInterFrameDelayVariationTwoWay;
126 }
127
128 @Override
129 public Duration maxInterFrameDelayVariationTwoWay() {
130 return maxInterFrameDelayVariationTwoWay;
131 }
132
133 @Override
134 public Duration averageInterFrameDelayVariationTwoWay() {
135 return averageInterFrameDelayVariationTwoWay;
136 }
137
138 @Override
139 public Duration maxFrameDelayRangeTwoWay() {
140 return maxFrameDelayRangeTwoWay;
141 }
142
143 @Override
144 public Duration averageFrameDelayRangeTwoWay() {
145 return averageFrameDelayRangeTwoWay;
146 }
147
148 @Override
149 public Duration measuredFrameDelayForward() {
150 return measuredFrameDelayForward;
151 }
152
153 @Override
154 public Duration maxFrameDelayForward() {
155 return maxFrameDelayForward;
156 }
157
158 @Override
159 public Duration averageFrameDelayForward() {
160 return averageFrameDelayForward;
161 }
162
163 @Override
164 public Duration measuredInterFrameDelayVariationForward() {
165 return measuredInterFrameDelayVariationForward;
166 }
167
168 @Override
169 public Duration maxInterFrameDelayVariationForward() {
170 return maxInterFrameDelayVariationForward;
171 }
172
173 @Override
174 public Duration averageInterFrameDelayVariationForward() {
175 return averageInterFrameDelayVariationForward;
176 }
177
178 @Override
179 public Duration maxFrameDelayRangeForward() {
180 return maxFrameDelayRangeForward;
181 }
182
183 @Override
184 public Duration averageFrameDelayRangeForward() {
185 return averageFrameDelayRangeForward;
186 }
187
188 @Override
189 public Duration measuredFrameDelayBackward() {
190 return measuredFrameDelayBackward;
191 }
192
193 @Override
194 public Duration maxFrameDelayBackward() {
195 return maxFrameDelayBackward;
196 }
197
198 @Override
199 public Duration averageFrameDelayBackward() {
200 return averageFrameDelayBackward;
201 }
202
203 @Override
204 public Duration measuredInterFrameDelayVariationBackward() {
205 return measuredInterFrameDelayVariationBackward;
206 }
207
208 @Override
209 public Duration maxInterFrameDelayVariationBackward() {
210 return maxInterFrameDelayVariationBackward;
211 }
212
213 @Override
214 public Duration averageInterFrameDelayVariationBackward() {
215 return averageInterFrameDelayVariationBackward;
216 }
217
218 @Override
219 public Duration maxFrameDelayRangeBackward() {
220 return maxFrameDelayRangeBackward;
221 }
222
223 @Override
224 public Duration averageFrameDelayRangeBackward() {
225 return averageFrameDelayRangeBackward;
226 }
227
228 public static DmThresholdBuilder builder(SoamId threshId) {
229 return new DefaultDmThresholdBuilder(threshId);
230 }
231
232 /**
Sean Condon3a1efef2018-02-24 13:16:03 +0000233 * Builder for {@link DelayMeasurementThreshold}.
Sean Condon0e89bda2017-03-21 14:23:19 +0000234 */
235 private static final class DefaultDmThresholdBuilder implements DmThresholdBuilder {
236 private final SoamId threshId;
237 private Collection<ThresholdOption> thresholdsEnabled;
238 private Duration measuredFrameDelayTwoWay;
239 private Duration maxFrameDelayTwoWay;
240 private Duration averageFrameDelayTwoWay;
241 private Duration measuredInterFrameDelayVariationTwoWay;
242 private Duration maxInterFrameDelayVariationTwoWay;
243 private Duration averageInterFrameDelayVariationTwoWay;
244 private Duration maxFrameDelayRangeTwoWay;
245 private Duration averageFrameDelayRangeTwoWay;
246 private Duration measuredFrameDelayForward;
247 private Duration maxFrameDelayForward;
248 private Duration averageFrameDelayForward;
249 private Duration measuredInterFrameDelayVariationForward;
250 private Duration maxInterFrameDelayVariationForward;
251 private Duration averageInterFrameDelayVariationForward;
252 private Duration maxFrameDelayRangeForward;
253 private Duration averageFrameDelayRangeForward;
254 private Duration measuredFrameDelayBackward;
255 private Duration maxFrameDelayBackward;
256 private Duration averageFrameDelayBackward;
257 private Duration measuredInterFrameDelayVariationBackward;
258 private Duration maxInterFrameDelayVariationBackward;
259 private Duration averageInterFrameDelayVariationBackward;
260 private Duration maxFrameDelayRangeBackward;
261 private Duration averageFrameDelayRangeBackward;
262
263 protected DefaultDmThresholdBuilder(SoamId threshId) {
264 this.threshId = threshId;
265 this.thresholdsEnabled = new ArrayList<>();
266 }
267
268 @Override
269 public DmThresholdBuilder addToThresholdsEnabled(
270 ThresholdOption thresholdEnabled) {
271 this.thresholdsEnabled.add(thresholdEnabled);
272 return this;
273 }
274
275 @Override
276 public DmThresholdBuilder measuredFrameDelayTwoWay(
277 Duration measuredFrameDelayTwoWay) {
278 this.measuredFrameDelayTwoWay = measuredFrameDelayTwoWay;
279 return this;
280 }
281
282 @Override
283 public DmThresholdBuilder maxFrameDelayTwoWay(
284 Duration maxFrameDelayTwoWay) {
285 this.maxFrameDelayTwoWay = maxFrameDelayTwoWay;
286 return this;
287 }
288
289 @Override
290 public DmThresholdBuilder averageFrameDelayTwoWay(
291 Duration averageFrameDelayTwoWay) {
292 this.averageFrameDelayTwoWay = averageFrameDelayTwoWay;
293 return this;
294 }
295
296 @Override
297 public DmThresholdBuilder measuredInterFrameDelayVariationTwoWay(
298 Duration measuredInterFrameDelayVariationTwoWay) {
299 this.measuredInterFrameDelayVariationTwoWay =
300 measuredInterFrameDelayVariationTwoWay;
301 return this;
302 }
303
304 @Override
305 public DmThresholdBuilder maxInterFrameDelayVariationTwoWay(
306 Duration maxInterFrameDelayVariationTwoWay) {
307 this.maxInterFrameDelayVariationTwoWay =
308 maxInterFrameDelayVariationTwoWay;
309 return this;
310 }
311
312 @Override
313 public DmThresholdBuilder averageInterFrameDelayVariationTwoWay(
314 Duration averageInterFrameDelayVariationTwoWay) {
315 this.averageInterFrameDelayVariationTwoWay =
316 averageInterFrameDelayVariationTwoWay;
317 return this;
318 }
319
320 @Override
321 public DmThresholdBuilder maxFrameDelayRangeTwoWay(
322 Duration maxFrameDelayRangeTwoWay) {
323 this.maxFrameDelayRangeTwoWay = maxFrameDelayRangeTwoWay;
324 return this;
325 }
326
327 @Override
328 public DmThresholdBuilder averageFrameDelayRangeTwoWay(
329 Duration averageFrameDelayRangeTwoWay) {
330 this.averageFrameDelayRangeTwoWay = averageFrameDelayRangeTwoWay;
331 return this;
332 }
333
334 @Override
335 public DmThresholdBuilder measuredFrameDelayForward(
336 Duration measuredFrameDelayForward) {
337 this.measuredFrameDelayForward = measuredFrameDelayForward;
338 return this;
339 }
340
341 @Override
342 public DmThresholdBuilder maxFrameDelayForward(
343 Duration maxFrameDelayForward) {
344 this.maxFrameDelayForward = maxFrameDelayForward;
345 return this;
346 }
347
348 @Override
349 public DmThresholdBuilder averageFrameDelayForward(
350 Duration averageFrameDelayForward) {
351 this.averageFrameDelayForward = averageFrameDelayForward;
352 return this;
353 }
354
355 @Override
356 public DmThresholdBuilder measuredInterFrameDelayVariationForward(
357 Duration measuredInterFrameDelayVariationForward) {
358 this.measuredInterFrameDelayVariationForward =
359 measuredInterFrameDelayVariationForward;
360 return this;
361 }
362
363 @Override
364 public DmThresholdBuilder maxInterFrameDelayVariationForward(
365 Duration maxInterFrameDelayVariationForward) {
366 this.maxInterFrameDelayVariationForward =
367 maxInterFrameDelayVariationForward;
368 return this;
369 }
370
371 @Override
372 public DmThresholdBuilder averageInterFrameDelayVariationForward(
373 Duration averageInterFrameDelayVariationForward) {
374 this.averageInterFrameDelayVariationForward =
375 averageInterFrameDelayVariationForward;
376 return this;
377 }
378
379 @Override
380 public DmThresholdBuilder maxFrameDelayRangeForward(
381 Duration maxFrameDelayRangeForward) {
382 this.maxFrameDelayRangeForward = maxFrameDelayRangeForward;
383 return this;
384 }
385
386 @Override
387 public DmThresholdBuilder averageFrameDelayRangeForward(
388 Duration averageFrameDelayRangeForward) {
389 this.averageFrameDelayRangeForward = averageFrameDelayRangeForward;
390 return this;
391 }
392
393 @Override
394 public DmThresholdBuilder measuredFrameDelayBackward(
395 Duration measuredFrameDelayBackward) {
396 this.measuredFrameDelayBackward = measuredFrameDelayBackward;
397 return this;
398 }
399
400 @Override
401 public DmThresholdBuilder maxFrameDelayBackward(
402 Duration maxFrameDelayBackward) {
403 this.maxFrameDelayBackward = maxFrameDelayBackward;
404 return this;
405 }
406
407 @Override
408 public DmThresholdBuilder averageFrameDelayBackward(
409 Duration averageFrameDelayBackward) {
410 this.averageFrameDelayBackward = averageFrameDelayBackward;
411 return this;
412 }
413
414 @Override
415 public DmThresholdBuilder measuredInterFrameDelayVariationBackward(
416 Duration measuredInterFrameDelayVariationBackward) {
417 this.measuredInterFrameDelayVariationBackward =
418 measuredInterFrameDelayVariationBackward;
419 return this;
420 }
421
422 @Override
423 public DmThresholdBuilder maxInterFrameDelayVariationBackward(
424 Duration maxInterFrameDelayVariationBackward) {
425 this.maxInterFrameDelayVariationBackward =
426 maxInterFrameDelayVariationBackward;
427 return this;
428 }
429
430 @Override
431 public DmThresholdBuilder averageInterFrameDelayVariationBackward(
432 Duration averageInterFrameDelayVariationBackward) {
433 this.averageInterFrameDelayVariationBackward =
434 averageInterFrameDelayVariationBackward;
435 return this;
436 }
437
438 @Override
439 public DmThresholdBuilder maxFrameDelayRangeBackward(
440 Duration maxFrameDelayRangeBackward) {
441 this.maxFrameDelayRangeBackward = maxFrameDelayRangeBackward;
442 return this;
443 }
444
445 @Override
446 public DmThresholdBuilder averageFrameDelayRangeBackward(
447 Duration averageFrameDelayRangeBackward) {
448 this.averageFrameDelayRangeBackward = averageFrameDelayRangeBackward;
449 return this;
450 }
451
452 @Override
453 public DelayMeasurementThreshold build() {
454 return new DefaultDelayMeasurementThreshold(this);
455 }
456 }
457
458}