WIP: adding utility methods
Change-Id: I078a33e67e4b424dd2f1c4eff362550fb3be3424
diff --git a/src/main/java/net/onrc/onos/datastore/topology/RCLink.java b/src/main/java/net/onrc/onos/datastore/topology/RCLink.java
index 957ef88..dfc4307 100644
--- a/src/main/java/net/onrc/onos/datastore/topology/RCLink.java
+++ b/src/main/java/net/onrc/onos/datastore/topology/RCLink.java
@@ -47,6 +47,12 @@
public byte[] getSwitchID() {
return RCSwitch.getSwichID(dpid);
}
+
+ @Override
+ public String toString() {
+ return "(" + Long.toHexString(dpid) + "@" + number + ")";
+ }
+
}
public static final String GLOBAL_LINK_TABLE_NAME = "G:Link";
@@ -76,6 +82,27 @@
.put(RCPort.getPortID(dst_dpid, dst_port_no)).array();
}
+ public static long[] getLinkTupleFromKey(byte[] key) {
+ return getLinkTupleFromKey(ByteBuffer.wrap(key));
+ }
+
+ public static long[] getLinkTupleFromKey(ByteBuffer keyBuf) {
+ long tuple[] = new long[4];
+ if (keyBuf.getChar() != 'L') {
+ throw new IllegalArgumentException("Invalid Link key");
+ }
+ long src_port_pair[] = RCPort.getPortPairFromKey(keyBuf.slice());
+ keyBuf.position(2 + RCPort.PORTID_BYTES);
+ long dst_port_pair[] = RCPort.getPortPairFromKey(keyBuf.slice());
+
+ tuple[0] = src_port_pair[0];
+ tuple[1] = src_port_pair[1];
+ tuple[2] = dst_port_pair[0];
+ tuple[3] = dst_port_pair[1];
+
+ return tuple;
+ }
+
public RCLink(Long src_dpid, Long src_port_no, Long dst_dpid,
Long dst_port_no) {
super(RCTable.getTable(GLOBAL_LINK_TABLE_NAME), getLinkID(src_dpid,
@@ -86,6 +113,12 @@
status = STATUS.INACTIVE;
}
+ public static RCLink createFromKey(byte[] key) {
+ long linkTuple[] = getLinkTupleFromKey(key);
+ return new RCLink(linkTuple[0], linkTuple[1], linkTuple[2],
+ linkTuple[3]);
+ }
+
public STATUS getStatus() {
return status;
}
@@ -127,6 +160,11 @@
return map;
}
+ @Override
+ public String toString() {
+ return "[RCLink " + src + "->" + dst + " STATUS:" + status + "]";
+ }
+
public static void main(String[] args) {
// TODO Auto-generated method stub