blob: 0616a5523a4c1c0c5d43efc756c2bb7bada9adfe [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.loss;
17
18import java.time.Duration;
19
20import org.onosproject.incubator.net.l2monitoring.soam.MilliPct;
21
22/**
23 * The default implementation of {@link org.onosproject.incubator.net.l2monitoring.soam.loss.LossAvailabilityStat}.
24 */
25public abstract class DefaultLaStat implements LossAvailabilityStat {
26 private final Duration elapsedTime;
27 private final boolean suspectStatus;
28 private final Long forwardHighLoss;
29 private final Long backwardHighLoss;
30 private final Long forwardConsecutiveHighLoss;
31 private final Long backwardConsecutiveHighLoss;
32 private final Long forwardAvailable;
33 private final Long backwardAvailable;
34 private final Long forwardUnavailable;
35 private final Long backwardUnavailable;
36 private final MilliPct forwardMinFrameLossRatio;
37 private final MilliPct forwardMaxFrameLossRatio;
38 private final MilliPct forwardAverageFrameLossRatio;
39 private final MilliPct backwardMinFrameLossRatio;
40 private final MilliPct backwardMaxFrameLossRatio;
41 private final MilliPct backwardAverageFrameLossRatio;
42
43 protected DefaultLaStat(DefaultLaStatBuilder builder) {
44 this.elapsedTime = builder.elapsedTime;
45 this.suspectStatus = builder.suspectStatus;
46 this.forwardHighLoss = builder.forwardHighLoss;
47 this.backwardHighLoss = builder.backwardHighLoss;
48 this.forwardConsecutiveHighLoss = builder.forwardConsecutiveHighLoss;
49 this.backwardConsecutiveHighLoss = builder.backwardConsecutiveHighLoss;
50 this.forwardAvailable = builder.forwardAvailable;
51 this.backwardAvailable = builder.backwardAvailable;
52 this.forwardUnavailable = builder.forwardUnavailable;
53 this.backwardUnavailable = builder.backwardUnavailable;
54 this.forwardMinFrameLossRatio = builder.forwardMinFrameLossRatio;
55 this.forwardMaxFrameLossRatio = builder.forwardMaxFrameLossRatio;
56 this.forwardAverageFrameLossRatio = builder.forwardAverageFrameLossRatio;
57 this.backwardMinFrameLossRatio = builder.backwardMinFrameLossRatio;
58 this.backwardMaxFrameLossRatio = builder.backwardMaxFrameLossRatio;
59 this.backwardAverageFrameLossRatio = builder.backwardAverageFrameLossRatio;
60 }
61
62 @Override
63 public Duration elapsedTime() {
64 return elapsedTime;
65 }
66
67 @Override
68 public boolean suspectStatus() {
69 return suspectStatus;
70 }
71
72 @Override
73 public Long forwardHighLoss() {
74 return forwardHighLoss;
75 }
76
77 @Override
78 public Long backwardHighLoss() {
79 return backwardHighLoss;
80 }
81
82 @Override
83 public Long forwardConsecutiveHighLoss() {
84 return forwardConsecutiveHighLoss;
85 }
86
87 @Override
88 public Long backwardConsecutiveHighLoss() {
89 return backwardConsecutiveHighLoss;
90 }
91
92 @Override
93 public Long forwardAvailable() {
94 return forwardAvailable;
95 }
96
97 @Override
98 public Long backwardAvailable() {
99 return backwardAvailable;
100 }
101
102 @Override
103 public Long forwardUnavailable() {
104 return forwardUnavailable;
105 }
106
107 @Override
108 public Long backwardUnavailable() {
109 return backwardUnavailable;
110 }
111
112 @Override
113 public MilliPct forwardMinFrameLossRatio() {
114 return forwardMinFrameLossRatio;
115 }
116
117 @Override
118 public MilliPct forwardMaxFrameLossRatio() {
119 return forwardMaxFrameLossRatio;
120 }
121
122 @Override
123 public MilliPct forwardAverageFrameLossRatio() {
124 return forwardAverageFrameLossRatio;
125 }
126
127 @Override
128 public MilliPct backwardMinFrameLossRatio() {
129 return backwardMinFrameLossRatio;
130 }
131
132 @Override
133 public MilliPct backwardMaxFrameLossRatio() {
134 return backwardMaxFrameLossRatio;
135 }
136
137 @Override
138 public MilliPct backwardAverageFrameLossRatio() {
139 return backwardAverageFrameLossRatio;
140 }
141
142 /**
143 * Abstract base class for builders of.
144 * {@link org.onosproject.incubator.net.l2monitoring.soam.loss.LossAvailabilityStat}.
145 */
146 protected abstract static class DefaultLaStatBuilder implements LaStatBuilder {
147 private final Duration elapsedTime;
148 private final boolean suspectStatus;
149 private Long forwardHighLoss;
150 private Long backwardHighLoss;
151 private Long forwardConsecutiveHighLoss;
152 private Long backwardConsecutiveHighLoss;
153 private Long forwardAvailable;
154 private Long backwardAvailable;
155 private Long forwardUnavailable;
156 private Long backwardUnavailable;
157 private MilliPct forwardMinFrameLossRatio;
158 private MilliPct forwardMaxFrameLossRatio;
159 private MilliPct forwardAverageFrameLossRatio;
160 private MilliPct backwardMinFrameLossRatio;
161 private MilliPct backwardMaxFrameLossRatio;
162 private MilliPct backwardAverageFrameLossRatio;
163
164 protected DefaultLaStatBuilder(Duration elapsedTime, boolean suspectStatus) {
165 this.elapsedTime = elapsedTime;
166 this.suspectStatus = suspectStatus;
167 }
168
169 @Override
170 public LaStatBuilder forwardHighLoss(Long forwardHighLoss) {
171 this.forwardHighLoss = forwardHighLoss;
172 return this;
173 }
174
175 @Override
176 public LaStatBuilder backwardHighLoss(Long backwardHighLoss) {
177 this.backwardHighLoss = backwardHighLoss;
178 return this;
179 }
180
181 @Override
182 public LaStatBuilder forwardConsecutiveHighLoss(
183 Long forwardConsecutiveHighLoss) {
184 this.forwardConsecutiveHighLoss = forwardConsecutiveHighLoss;
185 return this;
186 }
187
188 @Override
189 public LaStatBuilder backwardConsecutiveHighLoss(
190 Long backwardConsecutiveHighLoss) {
191 this.backwardConsecutiveHighLoss = backwardConsecutiveHighLoss;
192 return this;
193 }
194
195 @Override
196 public LaStatBuilder forwardAvailable(Long forwardAvailable) {
197 this.forwardAvailable = forwardAvailable;
198 return this;
199 }
200
201 @Override
202 public LaStatBuilder backwardAvailable(Long backwardAvailable) {
203 this.backwardAvailable = backwardAvailable;
204 return this;
205 }
206
207 @Override
208 public LaStatBuilder forwardUnavailable(Long forwardUnavailable) {
209 this.forwardUnavailable = forwardUnavailable;
210 return this;
211 }
212
213 @Override
214 public LaStatBuilder backwardUnavailable(Long backwardUnavailable) {
215 this.backwardUnavailable = backwardUnavailable;
216 return this;
217 }
218
219 @Override
220 public LaStatBuilder forwardMinFrameLossRatio(
221 MilliPct forwardMinFrameLossRatio) {
222 this.forwardMinFrameLossRatio = forwardMinFrameLossRatio;
223 return this;
224 }
225
226 @Override
227 public LaStatBuilder forwardMaxFrameLossRatio(
228 MilliPct forwardMaxFrameLossRatio) {
229 this.forwardMaxFrameLossRatio = forwardMaxFrameLossRatio;
230 return this;
231 }
232
233 @Override
234 public LaStatBuilder forwardAverageFrameLossRatio(
235 MilliPct forwardAverageFrameLossRatio) {
236 this.forwardAverageFrameLossRatio = forwardAverageFrameLossRatio;
237 return this;
238 }
239
240 @Override
241 public LaStatBuilder backwardMinFrameLossRatio(
242 MilliPct backwardMinFrameLossRatio) {
243 this.backwardMinFrameLossRatio = backwardMinFrameLossRatio;
244 return this;
245 }
246
247 @Override
248 public LaStatBuilder backwardMaxFrameLossRatio(
249 MilliPct backwardMaxFrameLossRatio) {
250 this.backwardMaxFrameLossRatio = backwardMaxFrameLossRatio;
251 return this;
252 }
253
254 @Override
255 public LaStatBuilder backwardAverageFrameLossRatio(
256 MilliPct backwardAverageFrameLossRatio) {
257 this.backwardAverageFrameLossRatio = backwardAverageFrameLossRatio;
258 return this;
259 }
260 }
261
262}