blob: 02aa30ba64bf742b13b5e4e47fd13ada1559cb9f [file] [log] [blame]
alshabib86ac11c2014-08-14 16:14:41 -07001// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
2// Copyright (c) 2011, 2012 Open Networking Foundation
3// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
4// This library was generated by the LoxiGen Compiler.
5// See the file LICENSE.txt which should have been included in the source distribution
6
7// Automatically generated by LOXI from template of_class.java
8// Do not modify
9
10package org.projectfloodlight.openflow.protocol.ver13;
11
12import org.projectfloodlight.openflow.protocol.*;
13import org.projectfloodlight.openflow.protocol.action.*;
14import org.projectfloodlight.openflow.protocol.actionid.*;
15import org.projectfloodlight.openflow.protocol.bsntlv.*;
16import org.projectfloodlight.openflow.protocol.errormsg.*;
17import org.projectfloodlight.openflow.protocol.meterband.*;
18import org.projectfloodlight.openflow.protocol.instruction.*;
19import org.projectfloodlight.openflow.protocol.instructionid.*;
20import org.projectfloodlight.openflow.protocol.match.*;
21import org.projectfloodlight.openflow.protocol.oxm.*;
22import org.projectfloodlight.openflow.protocol.queueprop.*;
23import org.projectfloodlight.openflow.types.*;
24import org.projectfloodlight.openflow.util.*;
25import org.projectfloodlight.openflow.exceptions.*;
26import org.slf4j.Logger;
27import org.slf4j.LoggerFactory;
28import java.util.List;
29import com.google.common.collect.ImmutableList;
30import java.util.Set;
31import org.jboss.netty.buffer.ChannelBuffer;
32import com.google.common.hash.PrimitiveSink;
33import com.google.common.hash.Funnel;
34
35class OFGroupStatsEntryVer13 implements OFGroupStatsEntry {
36 private static final Logger logger = LoggerFactory.getLogger(OFGroupStatsEntryVer13.class);
37 // version: 1.3
38 final static byte WIRE_VERSION = 4;
39 final static int MINIMUM_LENGTH = 40;
40
41 private final static OFGroup DEFAULT_GROUP_ID = OFGroup.ALL;
42 private final static long DEFAULT_REF_COUNT = 0x0L;
43 private final static U64 DEFAULT_PACKET_COUNT = U64.ZERO;
44 private final static U64 DEFAULT_BYTE_COUNT = U64.ZERO;
45 private final static long DEFAULT_DURATION_SEC = 0x0L;
46 private final static long DEFAULT_DURATION_NSEC = 0x0L;
47 private final static List<OFBucketCounter> DEFAULT_BUCKET_STATS = ImmutableList.<OFBucketCounter>of();
48
49 // OF message fields
50 private final OFGroup group;
51 private final long refCount;
52 private final U64 packetCount;
53 private final U64 byteCount;
54 private final long durationSec;
55 private final long durationNsec;
56 private final List<OFBucketCounter> bucketStats;
57//
58 // Immutable default instance
59 final static OFGroupStatsEntryVer13 DEFAULT = new OFGroupStatsEntryVer13(
60 DEFAULT_GROUP_ID, DEFAULT_REF_COUNT, DEFAULT_PACKET_COUNT, DEFAULT_BYTE_COUNT, DEFAULT_DURATION_SEC, DEFAULT_DURATION_NSEC, DEFAULT_BUCKET_STATS
61 );
62
63 // package private constructor - used by readers, builders, and factory
64 OFGroupStatsEntryVer13(OFGroup group, long refCount, U64 packetCount, U64 byteCount, long durationSec, long durationNsec, List<OFBucketCounter> bucketStats) {
65 this.group = group;
66 this.refCount = refCount;
67 this.packetCount = packetCount;
68 this.byteCount = byteCount;
69 this.durationSec = durationSec;
70 this.durationNsec = durationNsec;
71 this.bucketStats = bucketStats;
72 }
73
74 // Accessors for OF message fields
75 @Override
76 public OFGroup getGroup() {
77 return group;
78 }
79
80 @Override
81 public long getRefCount() {
82 return refCount;
83 }
84
85 @Override
86 public U64 getPacketCount() {
87 return packetCount;
88 }
89
90 @Override
91 public U64 getByteCount() {
92 return byteCount;
93 }
94
95 @Override
96 public List<OFBucketCounter> getBucketStats() {
97 return bucketStats;
98 }
99
100 @Override
101 public long getDurationSec() {
102 return durationSec;
103 }
104
105 @Override
106 public long getDurationNsec() {
107 return durationNsec;
108 }
109
110 @Override
111 public OFVersion getVersion() {
112 return OFVersion.OF_13;
113 }
114
115
116
117 public OFGroupStatsEntry.Builder createBuilder() {
118 return new BuilderWithParent(this);
119 }
120
121 static class BuilderWithParent implements OFGroupStatsEntry.Builder {
122 final OFGroupStatsEntryVer13 parentMessage;
123
124 // OF message fields
125 private boolean groupSet;
126 private OFGroup group;
127 private boolean refCountSet;
128 private long refCount;
129 private boolean packetCountSet;
130 private U64 packetCount;
131 private boolean byteCountSet;
132 private U64 byteCount;
133 private boolean durationSecSet;
134 private long durationSec;
135 private boolean durationNsecSet;
136 private long durationNsec;
137 private boolean bucketStatsSet;
138 private List<OFBucketCounter> bucketStats;
139
140 BuilderWithParent(OFGroupStatsEntryVer13 parentMessage) {
141 this.parentMessage = parentMessage;
142 }
143
144 @Override
145 public OFGroup getGroup() {
146 return group;
147 }
148
149 @Override
150 public OFGroupStatsEntry.Builder setGroup(OFGroup group) {
151 this.group = group;
152 this.groupSet = true;
153 return this;
154 }
155 @Override
156 public long getRefCount() {
157 return refCount;
158 }
159
160 @Override
161 public OFGroupStatsEntry.Builder setRefCount(long refCount) {
162 this.refCount = refCount;
163 this.refCountSet = true;
164 return this;
165 }
166 @Override
167 public U64 getPacketCount() {
168 return packetCount;
169 }
170
171 @Override
172 public OFGroupStatsEntry.Builder setPacketCount(U64 packetCount) {
173 this.packetCount = packetCount;
174 this.packetCountSet = true;
175 return this;
176 }
177 @Override
178 public U64 getByteCount() {
179 return byteCount;
180 }
181
182 @Override
183 public OFGroupStatsEntry.Builder setByteCount(U64 byteCount) {
184 this.byteCount = byteCount;
185 this.byteCountSet = true;
186 return this;
187 }
188 @Override
189 public List<OFBucketCounter> getBucketStats() {
190 return bucketStats;
191 }
192
193 @Override
194 public OFGroupStatsEntry.Builder setBucketStats(List<OFBucketCounter> bucketStats) {
195 this.bucketStats = bucketStats;
196 this.bucketStatsSet = true;
197 return this;
198 }
199 @Override
200 public long getDurationSec() {
201 return durationSec;
202 }
203
204 @Override
205 public OFGroupStatsEntry.Builder setDurationSec(long durationSec) {
206 this.durationSec = durationSec;
207 this.durationSecSet = true;
208 return this;
209 }
210 @Override
211 public long getDurationNsec() {
212 return durationNsec;
213 }
214
215 @Override
216 public OFGroupStatsEntry.Builder setDurationNsec(long durationNsec) {
217 this.durationNsec = durationNsec;
218 this.durationNsecSet = true;
219 return this;
220 }
221 @Override
222 public OFVersion getVersion() {
223 return OFVersion.OF_13;
224 }
225
226
227
228 @Override
229 public OFGroupStatsEntry build() {
230 OFGroup group = this.groupSet ? this.group : parentMessage.group;
231 if(group == null)
232 throw new NullPointerException("Property group must not be null");
233 long refCount = this.refCountSet ? this.refCount : parentMessage.refCount;
234 U64 packetCount = this.packetCountSet ? this.packetCount : parentMessage.packetCount;
235 if(packetCount == null)
236 throw new NullPointerException("Property packetCount must not be null");
237 U64 byteCount = this.byteCountSet ? this.byteCount : parentMessage.byteCount;
238 if(byteCount == null)
239 throw new NullPointerException("Property byteCount must not be null");
240 long durationSec = this.durationSecSet ? this.durationSec : parentMessage.durationSec;
241 long durationNsec = this.durationNsecSet ? this.durationNsec : parentMessage.durationNsec;
242 List<OFBucketCounter> bucketStats = this.bucketStatsSet ? this.bucketStats : parentMessage.bucketStats;
243 if(bucketStats == null)
244 throw new NullPointerException("Property bucketStats must not be null");
245
246 //
247 return new OFGroupStatsEntryVer13(
248 group,
249 refCount,
250 packetCount,
251 byteCount,
252 durationSec,
253 durationNsec,
254 bucketStats
255 );
256 }
257
258 }
259
260 static class Builder implements OFGroupStatsEntry.Builder {
261 // OF message fields
262 private boolean groupSet;
263 private OFGroup group;
264 private boolean refCountSet;
265 private long refCount;
266 private boolean packetCountSet;
267 private U64 packetCount;
268 private boolean byteCountSet;
269 private U64 byteCount;
270 private boolean durationSecSet;
271 private long durationSec;
272 private boolean durationNsecSet;
273 private long durationNsec;
274 private boolean bucketStatsSet;
275 private List<OFBucketCounter> bucketStats;
276
277 @Override
278 public OFGroup getGroup() {
279 return group;
280 }
281
282 @Override
283 public OFGroupStatsEntry.Builder setGroup(OFGroup group) {
284 this.group = group;
285 this.groupSet = true;
286 return this;
287 }
288 @Override
289 public long getRefCount() {
290 return refCount;
291 }
292
293 @Override
294 public OFGroupStatsEntry.Builder setRefCount(long refCount) {
295 this.refCount = refCount;
296 this.refCountSet = true;
297 return this;
298 }
299 @Override
300 public U64 getPacketCount() {
301 return packetCount;
302 }
303
304 @Override
305 public OFGroupStatsEntry.Builder setPacketCount(U64 packetCount) {
306 this.packetCount = packetCount;
307 this.packetCountSet = true;
308 return this;
309 }
310 @Override
311 public U64 getByteCount() {
312 return byteCount;
313 }
314
315 @Override
316 public OFGroupStatsEntry.Builder setByteCount(U64 byteCount) {
317 this.byteCount = byteCount;
318 this.byteCountSet = true;
319 return this;
320 }
321 @Override
322 public List<OFBucketCounter> getBucketStats() {
323 return bucketStats;
324 }
325
326 @Override
327 public OFGroupStatsEntry.Builder setBucketStats(List<OFBucketCounter> bucketStats) {
328 this.bucketStats = bucketStats;
329 this.bucketStatsSet = true;
330 return this;
331 }
332 @Override
333 public long getDurationSec() {
334 return durationSec;
335 }
336
337 @Override
338 public OFGroupStatsEntry.Builder setDurationSec(long durationSec) {
339 this.durationSec = durationSec;
340 this.durationSecSet = true;
341 return this;
342 }
343 @Override
344 public long getDurationNsec() {
345 return durationNsec;
346 }
347
348 @Override
349 public OFGroupStatsEntry.Builder setDurationNsec(long durationNsec) {
350 this.durationNsec = durationNsec;
351 this.durationNsecSet = true;
352 return this;
353 }
354 @Override
355 public OFVersion getVersion() {
356 return OFVersion.OF_13;
357 }
358
359//
360 @Override
361 public OFGroupStatsEntry build() {
362 OFGroup group = this.groupSet ? this.group : DEFAULT_GROUP_ID;
363 if(group == null)
364 throw new NullPointerException("Property group must not be null");
365 long refCount = this.refCountSet ? this.refCount : DEFAULT_REF_COUNT;
366 U64 packetCount = this.packetCountSet ? this.packetCount : DEFAULT_PACKET_COUNT;
367 if(packetCount == null)
368 throw new NullPointerException("Property packetCount must not be null");
369 U64 byteCount = this.byteCountSet ? this.byteCount : DEFAULT_BYTE_COUNT;
370 if(byteCount == null)
371 throw new NullPointerException("Property byteCount must not be null");
372 long durationSec = this.durationSecSet ? this.durationSec : DEFAULT_DURATION_SEC;
373 long durationNsec = this.durationNsecSet ? this.durationNsec : DEFAULT_DURATION_NSEC;
374 List<OFBucketCounter> bucketStats = this.bucketStatsSet ? this.bucketStats : DEFAULT_BUCKET_STATS;
375 if(bucketStats == null)
376 throw new NullPointerException("Property bucketStats must not be null");
377
378
379 return new OFGroupStatsEntryVer13(
380 group,
381 refCount,
382 packetCount,
383 byteCount,
384 durationSec,
385 durationNsec,
386 bucketStats
387 );
388 }
389
390 }
391
392
393 final static Reader READER = new Reader();
394 static class Reader implements OFMessageReader<OFGroupStatsEntry> {
395 @Override
396 public OFGroupStatsEntry readFrom(ChannelBuffer bb) throws OFParseError {
397 int start = bb.readerIndex();
398 int length = U16.f(bb.readShort());
399 if(length < MINIMUM_LENGTH)
400 throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
401 if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
402 // Buffer does not have all data yet
403 bb.readerIndex(start);
404 return null;
405 }
406 if(logger.isTraceEnabled())
407 logger.trace("readFrom - length={}", length);
408 // pad: 2 bytes
409 bb.skipBytes(2);
410 OFGroup group = OFGroup.read4Bytes(bb);
411 long refCount = U32.f(bb.readInt());
412 // pad: 4 bytes
413 bb.skipBytes(4);
414 U64 packetCount = U64.ofRaw(bb.readLong());
415 U64 byteCount = U64.ofRaw(bb.readLong());
416 long durationSec = U32.f(bb.readInt());
417 long durationNsec = U32.f(bb.readInt());
418 List<OFBucketCounter> bucketStats = ChannelUtils.readList(bb, length - (bb.readerIndex() - start), OFBucketCounterVer13.READER);
419
420 OFGroupStatsEntryVer13 groupStatsEntryVer13 = new OFGroupStatsEntryVer13(
421 group,
422 refCount,
423 packetCount,
424 byteCount,
425 durationSec,
426 durationNsec,
427 bucketStats
428 );
429 if(logger.isTraceEnabled())
430 logger.trace("readFrom - read={}", groupStatsEntryVer13);
431 return groupStatsEntryVer13;
432 }
433 }
434
435 public void putTo(PrimitiveSink sink) {
436 FUNNEL.funnel(this, sink);
437 }
438
439 final static OFGroupStatsEntryVer13Funnel FUNNEL = new OFGroupStatsEntryVer13Funnel();
440 static class OFGroupStatsEntryVer13Funnel implements Funnel<OFGroupStatsEntryVer13> {
441 private static final long serialVersionUID = 1L;
442 @Override
443 public void funnel(OFGroupStatsEntryVer13 message, PrimitiveSink sink) {
444 // FIXME: skip funnel of length
445 // skip pad (2 bytes)
446 message.group.putTo(sink);
447 sink.putLong(message.refCount);
448 // skip pad (4 bytes)
449 message.packetCount.putTo(sink);
450 message.byteCount.putTo(sink);
451 sink.putLong(message.durationSec);
452 sink.putLong(message.durationNsec);
453 FunnelUtils.putList(message.bucketStats, sink);
454 }
455 }
456
457
458 public void writeTo(ChannelBuffer bb) {
459 WRITER.write(bb, this);
460 }
461
462 final static Writer WRITER = new Writer();
463 static class Writer implements OFMessageWriter<OFGroupStatsEntryVer13> {
464 @Override
465 public void write(ChannelBuffer bb, OFGroupStatsEntryVer13 message) {
466 int startIndex = bb.writerIndex();
467 // length is length of variable message, will be updated at the end
468 int lengthIndex = bb.writerIndex();
469 bb.writeShort(U16.t(0));
470
471 // pad: 2 bytes
472 bb.writeZero(2);
473 message.group.write4Bytes(bb);
474 bb.writeInt(U32.t(message.refCount));
475 // pad: 4 bytes
476 bb.writeZero(4);
477 bb.writeLong(message.packetCount.getValue());
478 bb.writeLong(message.byteCount.getValue());
479 bb.writeInt(U32.t(message.durationSec));
480 bb.writeInt(U32.t(message.durationNsec));
481 ChannelUtils.writeList(bb, message.bucketStats);
482
483 // update length field
484 int length = bb.writerIndex() - startIndex;
485 bb.setShort(lengthIndex, length);
486
487 }
488 }
489
490 @Override
491 public String toString() {
492 StringBuilder b = new StringBuilder("OFGroupStatsEntryVer13(");
493 b.append("group=").append(group);
494 b.append(", ");
495 b.append("refCount=").append(refCount);
496 b.append(", ");
497 b.append("packetCount=").append(packetCount);
498 b.append(", ");
499 b.append("byteCount=").append(byteCount);
500 b.append(", ");
501 b.append("durationSec=").append(durationSec);
502 b.append(", ");
503 b.append("durationNsec=").append(durationNsec);
504 b.append(", ");
505 b.append("bucketStats=").append(bucketStats);
506 b.append(")");
507 return b.toString();
508 }
509
510 @Override
511 public boolean equals(Object obj) {
512 if (this == obj)
513 return true;
514 if (obj == null)
515 return false;
516 if (getClass() != obj.getClass())
517 return false;
518 OFGroupStatsEntryVer13 other = (OFGroupStatsEntryVer13) obj;
519
520 if (group == null) {
521 if (other.group != null)
522 return false;
523 } else if (!group.equals(other.group))
524 return false;
525 if( refCount != other.refCount)
526 return false;
527 if (packetCount == null) {
528 if (other.packetCount != null)
529 return false;
530 } else if (!packetCount.equals(other.packetCount))
531 return false;
532 if (byteCount == null) {
533 if (other.byteCount != null)
534 return false;
535 } else if (!byteCount.equals(other.byteCount))
536 return false;
537 if( durationSec != other.durationSec)
538 return false;
539 if( durationNsec != other.durationNsec)
540 return false;
541 if (bucketStats == null) {
542 if (other.bucketStats != null)
543 return false;
544 } else if (!bucketStats.equals(other.bucketStats))
545 return false;
546 return true;
547 }
548
549 @Override
550 public int hashCode() {
551 final int prime = 31;
552 int result = 1;
553
554 result = prime * result + ((group == null) ? 0 : group.hashCode());
555 result = prime * (int) (refCount ^ (refCount >>> 32));
556 result = prime * result + ((packetCount == null) ? 0 : packetCount.hashCode());
557 result = prime * result + ((byteCount == null) ? 0 : byteCount.hashCode());
558 result = prime * (int) (durationSec ^ (durationSec >>> 32));
559 result = prime * (int) (durationNsec ^ (durationNsec >>> 32));
560 result = prime * result + ((bucketStats == null) ? 0 : bucketStats.hashCode());
561 return result;
562 }
563
564}