/* * Copyright (c) 2013 Big Switch Networks, Inc. * * Licensed under the Eclipse Public License, Version 1.0 (the * "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. * * This file incorporates work covered by the following copyright and * permission notice: * * Copyright 2012, Andrew Ferguson, Brown University * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.openflow.protocol; import java.util.ArrayList; import java.util.List; import org.jboss.netty.buffer.ChannelBuffer; import org.openflow.util.U16; /** * Represents an ofp_queue_get_config_request message * @author Andrew Ferguson (adf@cs.brown.edu) */ public class OFQueueGetConfigReply extends OFMessage { public static int MINIMUM_LENGTH = 16; protected short portNumber; protected List<OFPacketQueue> queues = new ArrayList<OFPacketQueue>(); public OFQueueGetConfigReply() { super(); this.type = OFType.QUEUE_GET_CONFIG_REPLY; this.length = U16.t(MINIMUM_LENGTH); } /** * @return the portNumber */ public short getPortNumber() { return portNumber; } /** * @param portNumber the portNumber to set */ public void setPortNumber(short portNumber) { this.portNumber = portNumber; } /** * @return the port's queues */ public List<OFPacketQueue> getQueues() { return queues; } /** * @param queues the queues to set */ public void setQueues(List<OFPacketQueue> queues) { this.queues.clear(); this.queues.addAll(queues); } @Override public void readFrom(ChannelBuffer data) { super.readFrom(data); this.portNumber = data.readShort(); data.readInt(); // pad data.readShort(); // pad int availLength = (this.length - MINIMUM_LENGTH); this.queues.clear(); while (availLength > 0) { OFPacketQueue queue = new OFPacketQueue(); queue.readFrom(data); queues.add(queue); availLength -= queue.getLength(); } } @Override public void writeTo(ChannelBuffer data) { super.writeTo(data); data.writeShort(this.portNumber); data.writeInt(0); // pad data.writeShort(0); // pad for (OFPacketQueue queue : queues) { queue.writeTo(data); } } @Override public int hashCode() { final int prime = 349; int result = super.hashCode(); result = prime * result + portNumber; return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!super.equals(obj)) { return false; } if (!(obj instanceof OFQueueGetConfigReply)) { return false; } OFQueueGetConfigReply other = (OFQueueGetConfigReply) obj; if (portNumber != other.portNumber) { return false; } return true; } }