1 package org.openflow.codec.protocol;
3 import java.util.Arrays;
5 import org.openflow.codec.io.IDataBuffer;
6 import org.openflow.codec.util.U16;
9 * Represents ofp_experimenter_header
13 public class OFPExperimenterHeader extends OFPMessage {
14 public static int MINIMUM_LENGTH = 16;
16 private int experimenter;
23 public OFPExperimenterHeader() {
25 this.type = OFPType.EXPERIMENTER;
26 this.length = U16.t(MINIMUM_LENGTH);
34 public int getExperimenter() {
43 public void setExperimenter(int experimenter) {
44 this.experimenter = experimenter;
48 * get experimenter type
52 public int getExpType() {
57 * set experimenter type
61 public void setExpType(int expType) {
62 this.expType = expType;
66 public void readFrom(IDataBuffer data) {
68 this.experimenter = data.getInt();
69 this.expType = data.getInt();
70 if (this.length > MINIMUM_LENGTH) {
71 this.data = new byte[this.length - MINIMUM_LENGTH];
74 /* Vendor should take care of padding here to make the structure align*/
78 public void writeTo(IDataBuffer data) {
80 data.putInt(this.experimenter);
81 data.putInt(this.expType);
82 if (this.data != null)
84 /* Vendor should take care of padding here to make the structure align*/
90 public byte[] getData() {
98 public void setData(byte[] data) {
106 private void updateLength() {
107 int dataLength = (null == data) ? 0 : data.length;
108 this.length = (short) (OFPExperimenterHeader.MINIMUM_LENGTH + dataLength);
114 * @see java.lang.Object#hashCode()
117 public int hashCode() {
118 final int prime = 337;
119 int result = super.hashCode();
120 result = prime * result + Arrays.hashCode(data);
121 result = prime * result + experimenter;
122 result = prime * result + expType;
129 * @see java.lang.Object#equals(java.lang.Object)
132 public boolean equals(Object obj) {
135 if (!super.equals(obj))
137 if (getClass() != obj.getClass())
139 OFPExperimenterHeader other = (OFPExperimenterHeader) obj;
140 if (experimenter != other.experimenter)
142 if (expType != other.expType)
144 if (!Arrays.equals(data, other.data))