/* * 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 (c) 2008 The Board of Trustees of The Leland Stanford Junior 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.statistics; import org.jboss.netty.buffer.ChannelBuffer; import org.openflow.util.StringByteSerializer; /** * Represents an ofp_table_stats structure * @author David Erickson (daviderickson@cs.stanford.edu) */ public class OFTableStatistics implements OFStatistics { public static int MAX_TABLE_NAME_LEN = 32; protected byte tableId; protected String name; protected int wildcards; protected int maximumEntries; protected int activeCount; protected long lookupCount; protected long matchedCount; /** * @return the tableId */ public byte getTableId() { return tableId; } /** * @param tableId the tableId to set */ public void setTableId(byte tableId) { this.tableId = tableId; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the wildcards */ public int getWildcards() { return wildcards; } /** * @param wildcards the wildcards to set */ public void setWildcards(int wildcards) { this.wildcards = wildcards; } /** * @return the maximumEntries */ public int getMaximumEntries() { return maximumEntries; } /** * @param maximumEntries the maximumEntries to set */ public void setMaximumEntries(int maximumEntries) { this.maximumEntries = maximumEntries; } /** * @return the activeCount */ public int getActiveCount() { return activeCount; } /** * @param activeCount the activeCount to set */ public void setActiveCount(int activeCount) { this.activeCount = activeCount; } /** * @return the lookupCount */ public long getLookupCount() { return lookupCount; } /** * @param lookupCount the lookupCount to set */ public void setLookupCount(long lookupCount) { this.lookupCount = lookupCount; } /** * @return the matchedCount */ public long getMatchedCount() { return matchedCount; } /** * @param matchedCount the matchedCount to set */ public void setMatchedCount(long matchedCount) { this.matchedCount = matchedCount; } @Override public int getLength() { return 64; } @Override public void readFrom(ChannelBuffer data) { this.tableId = data.readByte(); data.readByte(); // pad data.readByte(); // pad data.readByte(); // pad this.name = StringByteSerializer.readFrom(data, MAX_TABLE_NAME_LEN); this.wildcards = data.readInt(); this.maximumEntries = data.readInt(); this.activeCount = data.readInt(); this.lookupCount = data.readLong(); this.matchedCount = data.readLong(); } @Override public void writeTo(ChannelBuffer data) { data.writeByte(this.tableId); data.writeByte((byte) 0); // pad data.writeByte((byte) 0); // pad data.writeByte((byte) 0); // pad StringByteSerializer.writeTo(data, MAX_TABLE_NAME_LEN, this.name); data.writeInt(this.wildcards); data.writeInt(this.maximumEntries); data.writeInt(this.activeCount); data.writeLong(this.lookupCount); data.writeLong(this.matchedCount); } @Override public int hashCode() { final int prime = 449; int result = 1; result = prime * result + activeCount; result = prime * result + (int) (lookupCount ^ (lookupCount >>> 32)); result = prime * result + (int) (matchedCount ^ (matchedCount >>> 32)); result = prime * result + maximumEntries; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + tableId; result = prime * result + wildcards; return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof OFTableStatistics)) { return false; } OFTableStatistics other = (OFTableStatistics) obj; if (activeCount != other.activeCount) { return false; } if (lookupCount != other.lookupCount) { return false; } if (matchedCount != other.matchedCount) { return false; } if (maximumEntries != other.maximumEntries) { return false; } if (name == null) { if (other.name != null) { return false; } } else if (!name.equals(other.name)) { return false; } if (tableId != other.tableId) { return false; } if (wildcards != other.wildcards) { return false; } return true; } }