/* * Copyright (c) 2011,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: * * Originally created by David Erickson & Rob Sherwood, Stanford 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.vendor; import org.jboss.netty.buffer.ChannelBuffer; /** * Basic implementation of OFVendorData that just treats the data as a * byte array. This is used if there's an OFVendor message where there's * no registered OFVendorId or no specific OFVendorDataType that can be * determined from the data. * * @author Rob Vaterlaus (rob.vaterlaus@bigswitch.com) */ public class OFByteArrayVendorData implements OFVendorData { protected byte[] bytes; /** * Construct vendor data with an empty byte array. */ public OFByteArrayVendorData() { } /** * Construct vendor data with the specified byte array. * @param bytes */ public OFByteArrayVendorData(byte[] bytes) { this.bytes = bytes; } /** * Get the associated byte array for this vendor data. * @return the byte array containing the raw vendor data. */ public byte[] getBytes() { return bytes; } /** * Set the byte array for the vendor data. * @param bytes the raw byte array containing the vendor data. */ public void setBytes(byte[] bytes) { this.bytes = bytes; } /** * Get the length of the vendor data. In this case it's just then length * of the underlying byte array. * @return the length of the vendor data */ @Override public int getLength() { return (bytes != null) ? bytes.length : 0; } /** * Read the vendor data from the ChannelBuffer into the byte array. * @param data the channel buffer from which we're deserializing * @param length the length to the end of the enclosing message */ @Override public void readFrom(ChannelBuffer data, int length) { bytes = new byte[length]; data.readBytes(bytes); } /** * Write the vendor data bytes to the ChannelBuffer * @param data the channel buffer to which we're serializing */ @Override public void writeTo(ChannelBuffer data) { if (bytes != null) data.writeBytes(bytes); } }