org.opendaylight.controller.protocol_plugin.openflow.vendorextension.v6extension.V6StatsRequest.java Source code

Java tutorial

Introduction

Here is the source code for org.opendaylight.controller.protocol_plugin.openflow.vendorextension.v6extension.V6StatsRequest.java

Source

/*
 * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 */

package org.opendaylight.controller.protocol_plugin.openflow.vendorextension.v6extension;

import java.nio.ByteBuffer;

import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.openflow.protocol.statistics.OFVendorStatistics;

/**
 * This Class creates the OpenFlow Vendor Extension IPv6 Flow Stats Request 
 * messages and also reads the Reply of a stats request message.
 * 
 */

public class V6StatsRequest extends OFVendorStatistics {
    private static final long serialVersionUID = 1L;
    protected int msgsubtype;
    protected short outPort;
    protected short match_len;
    protected byte tableId;

    public static final int NICIRA_VENDOR_ID = 0x00002320; //Nicira ID
    private static final int NXST_FLOW = 0x0; //Nicira Flow Stats Request Id

    public V6StatsRequest() {
        this.vendor = NICIRA_VENDOR_ID;
        this.msgsubtype = NXST_FLOW;
        this.match_len = 0;
    }

    /**
     * @param None. Being set with local variable (TBD).
     */
    public void setVendorId() {
        this.vendor = NICIRA_VENDOR_ID;
    }

    /**
     * @return vendor id
     */
    public int getVendorId() {
        return vendor;
    }

    /**
     * @param None. Being set with local variable (TBD).
     */
    public void setMsgtype() {
        this.msgsubtype = NXST_FLOW;
    }

    /**
     * @return vendor_msgtype
     */
    public int getMsgtype() {
        return msgsubtype;
    }

    /**
     * @param outPort the outPort to set
     */
    public void setOutPort(short outPort) {
        this.outPort = outPort;
    }

    /**
     * @return the outPort
     */
    public short getOutPort() {
        return outPort;
    }

    /**
     * @param match_len the match_len to set
     */
    public void setMatchLen(short match_len) {
        this.match_len = match_len;
    }

    /**
     * @return the match_len
     */
    public short getMatchLen() {
        return match_len;
    }

    /**
     * @param tableId the tableId to set
     */
    public void setTableId(byte tableId) {
        this.tableId = tableId;
    }

    /**
     * @return the tableId
     */
    public byte getTableId() {
        return tableId;
    }

    @Override
    public int getLength() {
        return 20;// 4(vendor)+4(msgsubtype)+4(pad)+2(outPort)+2(match_len)+1(tableid)+3(pad)
    }

    @Override
    public void readFrom(ByteBuffer data) {
        this.vendor = data.getInt();
        this.msgsubtype = data.getInt();
        data.getInt();//pad 4 bytes
        this.outPort = data.getShort();
        this.match_len = data.getShort();
        this.tableId = data.get();
        for (int i = 0; i < 3; i++)
            data.get();//pad byte

    }

    @Override
    public void writeTo(ByteBuffer data) {
        data.putInt(this.vendor);
        data.putInt(this.msgsubtype);
        data.putInt((int) 0x0);//pad0
        data.putShort(this.outPort);
        data.putShort(this.match_len);
        data.put(this.tableId);
        for (int i = 0; i < 3; i++)
            data.put((byte) 0x0);//pad byte
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = super.hashCode();
        result = prime * result + match_len;
        result = prime * result + msgsubtype;
        result = prime * result + outPort;
        result = prime * result + tableId;
        return result;
    }

    @Override
    public String toString() {
        return "V6StatsRequest[" + ReflectionToStringBuilder.toString(this) + "]";
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (!super.equals(obj))
            return false;
        if (getClass() != obj.getClass())
            return false;
        V6StatsRequest other = (V6StatsRequest) obj;
        if (match_len != other.match_len)
            return false;
        if (msgsubtype != other.msgsubtype)
            return false;
        if (outPort != other.outPort)
            return false;
        if (tableId != other.tableId)
            return false;
        return true;
    }
}