| package net.floodlightcontroller.topology; |
| |
| import net.floodlightcontroller.core.web.serializers.DPIDSerializer; |
| import net.floodlightcontroller.core.web.serializers.UShortSerializer; |
| |
| import org.codehaus.jackson.annotate.JsonProperty; |
| import org.codehaus.jackson.map.annotate.JsonSerialize; |
| import org.openflow.util.HexString; |
| |
| /** |
| * A NodePortTuple is similar to a SwitchPortTuple |
| * but it only stores IDs instead of references |
| * to the actual objects. |
| * @author srini |
| */ |
| public class NodePortTuple { |
| protected long nodeId; // switch DPID |
| protected short portId; // switch port id |
| |
| /** |
| * A copy constructor for NodePortTuple. |
| * |
| * @param other the object to copy the state from. |
| */ |
| public NodePortTuple(NodePortTuple other) { |
| this.nodeId = other.nodeId; |
| this.portId = other.portId; |
| } |
| |
| /** |
| * Creates a NodePortTuple |
| * @param nodeId The DPID of the switch |
| * @param portId The port of the switch |
| */ |
| public NodePortTuple(long nodeId, short portId) { |
| this.nodeId = nodeId; |
| this.portId = portId; |
| } |
| |
| public NodePortTuple(long nodeId, int portId) { |
| this.nodeId = nodeId; |
| this.portId = (short) portId; |
| } |
| |
| @JsonProperty("switch") |
| @JsonSerialize(using=DPIDSerializer.class) |
| public long getNodeId() { |
| return nodeId; |
| } |
| public void setNodeId(long nodeId) { |
| this.nodeId = nodeId; |
| } |
| @JsonProperty("port") |
| @JsonSerialize(using=UShortSerializer.class) |
| public short getPortId() { |
| return portId; |
| } |
| public void setPortId(short portId) { |
| this.portId = portId; |
| } |
| |
| public String toString() { |
| return "[id=" + HexString.toHexString(nodeId) + ", port=" + new Short(portId) + "]"; |
| } |
| |
| @Override |
| public int hashCode() { |
| final int prime = 31; |
| int result = 1; |
| result = prime * result + (int) (nodeId ^ (nodeId >>> 32)); |
| result = prime * result + portId; |
| return result; |
| } |
| |
| @Override |
| public boolean equals(Object obj) { |
| if (this == obj) |
| return true; |
| if (obj == null) |
| return false; |
| if (getClass() != obj.getClass()) |
| return false; |
| NodePortTuple other = (NodePortTuple) obj; |
| if (nodeId != other.nodeId) |
| return false; |
| if (portId != other.portId) |
| return false; |
| return true; |
| } |
| |
| /** |
| * API to return a String value formed wtih NodeID and PortID |
| * The portID is a 16-bit field, so mask it as an integer to get full |
| * positive value |
| * @return |
| */ |
| public String toKeyString() { |
| return (HexString.toHexString(nodeId)+ "|" + (portId & 0xffff)); |
| } |
| } |