package org.openflow.protocol.queue;
import java.nio.ByteBuffer;
import org.openflow.util.U16;
/**
* Corresponds to the struct ofp_queue_prop_header OpenFlow structure
*
* @author David Erickson (daviderickson@cs.stanford.edu)
*/
public class OFQueueProperty implements Cloneable {
public static int MINIMUM_LENGTH = 8;
protected OFQueuePropertyType type;
protected short length;
/**
* @return the type
*/
public OFQueuePropertyType getType() {
return type;
}
/**
* @param type the type to set
*/
public void setType(OFQueuePropertyType type) {
this.type = type;
}
/**
* @return the length
*/
public short getLength() {
return length;
}
/**
* Returns the unsigned length
*
* @return the length
*/
public int getLengthU() {
return U16.f(length);
}
/**
* @param length the length to set
*/
public void setLength(short length) {
this.length = length;
}
public void readFrom(ByteBuffer data) {
this.type = OFQueuePropertyType.valueOf(data.getShort());
this.length = data.getShort();
data.getInt(); // pad
}
public void writeTo(ByteBuffer data) {
data.putShort(this.type.getTypeValue());
data.putShort(this.length);
data.putInt(0); // pad
}
@Override
public int hashCode() {
final int prime = 2777;
int result = 1;
result = prime * result + length;
result = prime * result + ((type == null) ? 0 : type.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof OFQueueProperty))
return false;
OFQueueProperty other = (OFQueueProperty) obj;
if (length != other.length)
return false;
if (type != other.type)
return false;
return true;
}
@Override
protected OFQueueProperty clone() {
try {
return (OFQueueProperty) super.clone();
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
}