blob: ac8b3485083a72b1628e93b7c00854b8488662af [file] [log] [blame]
tom0eb04ca2014-08-25 14:34:51 -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 OFMeterConfigVer13 implements OFMeterConfig {
36 private static final Logger logger = LoggerFactory.getLogger(OFMeterConfigVer13.class);
37 // version: 1.3
38 final static byte WIRE_VERSION = 4;
39 final static int MINIMUM_LENGTH = 8;
40
41 private final static int DEFAULT_FLAGS = 0x0;
42 private final static long DEFAULT_METER_ID = 0x0L;
43 private final static List<OFMeterBand> DEFAULT_ENTRIES = ImmutableList.<OFMeterBand>of();
44
45 // OF message fields
46 private final int flags;
47 private final long meterId;
48 private final List<OFMeterBand> entries;
49//
50 // Immutable default instance
51 final static OFMeterConfigVer13 DEFAULT = new OFMeterConfigVer13(
52 DEFAULT_FLAGS, DEFAULT_METER_ID, DEFAULT_ENTRIES
53 );
54
55 // package private constructor - used by readers, builders, and factory
56 OFMeterConfigVer13(int flags, long meterId, List<OFMeterBand> entries) {
57 this.flags = flags;
58 this.meterId = meterId;
59 this.entries = entries;
60 }
61
62 // Accessors for OF message fields
63 @Override
64 public int getFlags() {
65 return flags;
66 }
67
68 @Override
69 public long getMeterId() {
70 return meterId;
71 }
72
73 @Override
74 public List<OFMeterBand> getEntries() {
75 return entries;
76 }
77
78 @Override
79 public OFVersion getVersion() {
80 return OFVersion.OF_13;
81 }
82
83
84
85 public OFMeterConfig.Builder createBuilder() {
86 return new BuilderWithParent(this);
87 }
88
89 static class BuilderWithParent implements OFMeterConfig.Builder {
90 final OFMeterConfigVer13 parentMessage;
91
92 // OF message fields
93 private boolean flagsSet;
94 private int flags;
95 private boolean meterIdSet;
96 private long meterId;
97 private boolean entriesSet;
98 private List<OFMeterBand> entries;
99
100 BuilderWithParent(OFMeterConfigVer13 parentMessage) {
101 this.parentMessage = parentMessage;
102 }
103
104 @Override
105 public int getFlags() {
106 return flags;
107 }
108
109 @Override
110 public OFMeterConfig.Builder setFlags(int flags) {
111 this.flags = flags;
112 this.flagsSet = true;
113 return this;
114 }
115 @Override
116 public long getMeterId() {
117 return meterId;
118 }
119
120 @Override
121 public OFMeterConfig.Builder setMeterId(long meterId) {
122 this.meterId = meterId;
123 this.meterIdSet = true;
124 return this;
125 }
126 @Override
127 public List<OFMeterBand> getEntries() {
128 return entries;
129 }
130
131 @Override
132 public OFMeterConfig.Builder setEntries(List<OFMeterBand> entries) {
133 this.entries = entries;
134 this.entriesSet = true;
135 return this;
136 }
137 @Override
138 public OFVersion getVersion() {
139 return OFVersion.OF_13;
140 }
141
142
143
144 @Override
145 public OFMeterConfig build() {
146 int flags = this.flagsSet ? this.flags : parentMessage.flags;
147 long meterId = this.meterIdSet ? this.meterId : parentMessage.meterId;
148 List<OFMeterBand> entries = this.entriesSet ? this.entries : parentMessage.entries;
149 if(entries == null)
150 throw new NullPointerException("Property entries must not be null");
151
152 //
153 return new OFMeterConfigVer13(
154 flags,
155 meterId,
156 entries
157 );
158 }
159
160 }
161
162 static class Builder implements OFMeterConfig.Builder {
163 // OF message fields
164 private boolean flagsSet;
165 private int flags;
166 private boolean meterIdSet;
167 private long meterId;
168 private boolean entriesSet;
169 private List<OFMeterBand> entries;
170
171 @Override
172 public int getFlags() {
173 return flags;
174 }
175
176 @Override
177 public OFMeterConfig.Builder setFlags(int flags) {
178 this.flags = flags;
179 this.flagsSet = true;
180 return this;
181 }
182 @Override
183 public long getMeterId() {
184 return meterId;
185 }
186
187 @Override
188 public OFMeterConfig.Builder setMeterId(long meterId) {
189 this.meterId = meterId;
190 this.meterIdSet = true;
191 return this;
192 }
193 @Override
194 public List<OFMeterBand> getEntries() {
195 return entries;
196 }
197
198 @Override
199 public OFMeterConfig.Builder setEntries(List<OFMeterBand> entries) {
200 this.entries = entries;
201 this.entriesSet = true;
202 return this;
203 }
204 @Override
205 public OFVersion getVersion() {
206 return OFVersion.OF_13;
207 }
208
209//
210 @Override
211 public OFMeterConfig build() {
212 int flags = this.flagsSet ? this.flags : DEFAULT_FLAGS;
213 long meterId = this.meterIdSet ? this.meterId : DEFAULT_METER_ID;
214 List<OFMeterBand> entries = this.entriesSet ? this.entries : DEFAULT_ENTRIES;
215 if(entries == null)
216 throw new NullPointerException("Property entries must not be null");
217
218
219 return new OFMeterConfigVer13(
220 flags,
221 meterId,
222 entries
223 );
224 }
225
226 }
227
228
229 final static Reader READER = new Reader();
230 static class Reader implements OFMessageReader<OFMeterConfig> {
231 @Override
232 public OFMeterConfig readFrom(ChannelBuffer bb) throws OFParseError {
233 int start = bb.readerIndex();
234 int length = U16.f(bb.readShort());
235 if(length < MINIMUM_LENGTH)
236 throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
237 if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
238 // Buffer does not have all data yet
239 bb.readerIndex(start);
240 return null;
241 }
242 if(logger.isTraceEnabled())
243 logger.trace("readFrom - length={}", length);
244 int flags = U16.f(bb.readShort());
245 long meterId = U32.f(bb.readInt());
246 List<OFMeterBand> entries = ChannelUtils.readList(bb, length - (bb.readerIndex() - start), OFMeterBandVer13.READER);
247
248 OFMeterConfigVer13 meterConfigVer13 = new OFMeterConfigVer13(
249 flags,
250 meterId,
251 entries
252 );
253 if(logger.isTraceEnabled())
254 logger.trace("readFrom - read={}", meterConfigVer13);
255 return meterConfigVer13;
256 }
257 }
258
259 public void putTo(PrimitiveSink sink) {
260 FUNNEL.funnel(this, sink);
261 }
262
263 final static OFMeterConfigVer13Funnel FUNNEL = new OFMeterConfigVer13Funnel();
264 static class OFMeterConfigVer13Funnel implements Funnel<OFMeterConfigVer13> {
265 private static final long serialVersionUID = 1L;
266 @Override
267 public void funnel(OFMeterConfigVer13 message, PrimitiveSink sink) {
268 // FIXME: skip funnel of length
269 sink.putInt(message.flags);
270 sink.putLong(message.meterId);
271 FunnelUtils.putList(message.entries, sink);
272 }
273 }
274
275
276 public void writeTo(ChannelBuffer bb) {
277 WRITER.write(bb, this);
278 }
279
280 final static Writer WRITER = new Writer();
281 static class Writer implements OFMessageWriter<OFMeterConfigVer13> {
282 @Override
283 public void write(ChannelBuffer bb, OFMeterConfigVer13 message) {
284 int startIndex = bb.writerIndex();
285 // length is length of variable message, will be updated at the end
286 int lengthIndex = bb.writerIndex();
287 bb.writeShort(U16.t(0));
288
289 bb.writeShort(U16.t(message.flags));
290 bb.writeInt(U32.t(message.meterId));
291 ChannelUtils.writeList(bb, message.entries);
292
293 // update length field
294 int length = bb.writerIndex() - startIndex;
295 bb.setShort(lengthIndex, length);
296
297 }
298 }
299
300 @Override
301 public String toString() {
302 StringBuilder b = new StringBuilder("OFMeterConfigVer13(");
303 b.append("flags=").append(flags);
304 b.append(", ");
305 b.append("meterId=").append(meterId);
306 b.append(", ");
307 b.append("entries=").append(entries);
308 b.append(")");
309 return b.toString();
310 }
311
312 @Override
313 public boolean equals(Object obj) {
314 if (this == obj)
315 return true;
316 if (obj == null)
317 return false;
318 if (getClass() != obj.getClass())
319 return false;
320 OFMeterConfigVer13 other = (OFMeterConfigVer13) obj;
321
322 if( flags != other.flags)
323 return false;
324 if( meterId != other.meterId)
325 return false;
326 if (entries == null) {
327 if (other.entries != null)
328 return false;
329 } else if (!entries.equals(other.entries))
330 return false;
331 return true;
332 }
333
334 @Override
335 public int hashCode() {
336 final int prime = 31;
337 int result = 1;
338
339 result = prime * result + flags;
340 result = prime * (int) (meterId ^ (meterId >>> 32));
341 result = prime * result + ((entries == null) ? 0 : entries.hashCode());
342 return result;
343 }
344
345}