| /** |
| * Copyright 2011, Big Switch Networks, Inc. |
| * 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); |
| } |
| } |