| /** |
| * 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.vendor.nicira; |
| |
| import org.jboss.netty.buffer.ChannelBuffer; |
| |
| /** |
| * Class that represents the vendor data in the role request |
| * extension implemented by Open vSwitch to support high availability. |
| * |
| * @author Rob Vaterlaus (rob.vaterlaus@bigswitch.com) |
| */ |
| public class OFRoleVendorData extends OFNiciraVendorData { |
| |
| /** |
| * Role value indicating that the controller is in the OTHER role. |
| */ |
| public static final int NX_ROLE_OTHER = 0; |
| |
| /** |
| * Role value indicating that the controller is in the MASTER role. |
| */ |
| public static final int NX_ROLE_MASTER = 1; |
| |
| /** |
| * Role value indicating that the controller is in the SLAVE role. |
| */ |
| public static final int NX_ROLE_SLAVE = 2; |
| |
| protected int role; |
| |
| /** |
| * Construct an uninitialized OFRoleVendorData |
| */ |
| public OFRoleVendorData() { |
| super(); |
| } |
| |
| /** |
| * Construct an OFRoleVendorData with the specified data type |
| * (i.e. either request or reply) and an unspecified role. |
| * @param dataType |
| */ |
| public OFRoleVendorData(int dataType) { |
| super(dataType); |
| } |
| |
| /** |
| * Construct an OFRoleVendorData with the specified data type |
| * (i.e. either request or reply) and role (i.e. one of of |
| * master, slave, or other). |
| * @param dataType either role request or role reply data type |
| */ |
| public OFRoleVendorData(int dataType, int role) { |
| super(dataType); |
| this.role = role; |
| } |
| /** |
| * @return the role value of the role vendor data |
| */ |
| public int getRole() { |
| return role; |
| } |
| |
| /** |
| * @param role the role value of the role vendor data |
| */ |
| public void setRole(int role) { |
| this.role = role; |
| } |
| |
| /** |
| * @return the total length of the role vendor data |
| */ |
| @Override |
| public int getLength() { |
| return super.getLength() + 4; |
| } |
| |
| /** |
| * Read the role vendor data from the ChannelBuffer |
| * @param data the channel buffer from which we're deserializing |
| * @param length the length to the end of the enclosing message |
| */ |
| public void readFrom(ChannelBuffer data, int length) { |
| super.readFrom(data, length); |
| role = data.readInt(); |
| } |
| |
| /** |
| * Write the role vendor data to the ChannelBuffer |
| * @param data the channel buffer to which we're serializing |
| */ |
| public void writeTo(ChannelBuffer data) { |
| super.writeTo(data); |
| data.writeInt(role); |
| } |
| } |