+++ /dev/null
-package org.openflow.protocol.queue;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.openflow.protocol.factory.OFQueuePropertyFactory;
-import org.openflow.protocol.factory.OFQueuePropertyFactoryAware;
-import org.openflow.util.U16;
-
-/**
- * Corresponds to the struct ofp_packet_queue OpenFlow structure
- *
- * @author David Erickson (daviderickson@cs.stanford.edu)
- */
-public class OFPacketQueue implements Cloneable, OFQueuePropertyFactoryAware {
- public static int MINIMUM_LENGTH = 8;
-
- protected OFQueuePropertyFactory queuePropertyFactory;
-
- protected int queueId;
- protected short length;
- protected List<OFQueueProperty> properties;
-
- /**
- * @return the queueId
- */
- public int getQueueId() {
- return queueId;
- }
-
- /**
- * @param queueId the queueId to set
- */
- public OFPacketQueue setQueueId(int queueId) {
- this.queueId = queueId;
- return this;
- }
-
- /**
- * @return the length
- */
- public short getLength() {
- return length;
- }
-
- /**
- * @param length the length to set
- */
- public void setLength(short length) {
- this.length = length;
- }
-
- /**
- * @return the properties
- */
- public List<OFQueueProperty> getProperties() {
- return properties;
- }
-
- /**
- * @param properties the properties to set
- */
- public OFPacketQueue setProperties(List<OFQueueProperty> properties) {
- this.properties = properties;
- return this;
- }
-
- public void readFrom(ByteBuffer data) {
- this.queueId = data.getInt();
- this.length = data.getShort();
- data.getShort(); // pad
- if (this.queuePropertyFactory == null)
- throw new RuntimeException("OFQueuePropertyFactory not set");
- this.properties = queuePropertyFactory.parseQueueProperties(data,
- U16.f(this.length) - MINIMUM_LENGTH);
- }
-
- public void writeTo(ByteBuffer data) {
- data.putInt(this.queueId);
- data.putShort(this.length);
- data.putShort((short) 0); // pad
- if (this.properties != null) {
- for (OFQueueProperty queueProperty : this.properties) {
- queueProperty.writeTo(data);
- }
- }
- }
-
- @Override
- public int hashCode() {
- final int prime = 6367;
- int result = 1;
- result = prime * result + length;
- result = prime * result
- + ((properties == null) ? 0 : properties.hashCode());
- result = prime * result + queueId;
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (!(obj instanceof OFPacketQueue))
- return false;
- OFPacketQueue other = (OFPacketQueue) obj;
- if (length != other.length)
- return false;
- if (properties == null) {
- if (other.properties != null)
- return false;
- } else if (!properties.equals(other.properties))
- return false;
- if (queueId != other.queueId)
- return false;
- return true;
- }
-
- @Override
- public OFPacketQueue clone() {
- try {
- OFPacketQueue clone = (OFPacketQueue) super.clone();
- if (this.properties != null) {
- List<OFQueueProperty> queueProps = new ArrayList<OFQueueProperty>();
- for (OFQueueProperty prop : this.properties) {
- queueProps.add(prop.clone());
- }
- clone.setProperties(queueProps);
- }
- return clone;
- } catch (CloneNotSupportedException e) {
- throw new RuntimeException(e);
- }
- }
-
- @Override
- public void setQueuePropertyFactory(
- OFQueuePropertyFactory queuePropertyFactory) {
- this.queuePropertyFactory = queuePropertyFactory;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- return "OFPacketQueue [queueId=" + queueId + ", properties="
- + properties + "]";
- }
-}