blob: d95d4fd56a9080578c7601ee819d2d6459368c8e [file] [log] [blame]
Jonathan Hart472062d2014-04-03 10:56:48 -07001package net.onrc.onos.core.topology;
Jonathan Hart062a2e82014-02-03 09:41:57 -08002
Yuta HIGUCHI181d34d2014-02-05 15:05:46 -08003/**
4 * Link Object stored in In-memory Topology.
5 *
6 * TODO REMOVE following design memo: This object itself may hold the DBObject,
7 * but this Object itself will not issue any read/write to the DataStore.
8 */
Jonathan Hart062a2e82014-02-03 09:41:57 -08009public class LinkImpl extends NetworkGraphObject implements Link {
Toshio Koide2f570c12014-02-06 16:55:32 -080010 protected Port srcPort;
11 protected Port dstPort;
Yuta HIGUCHI181d34d2014-02-05 15:05:46 -080012
Toshio Koide2f570c12014-02-06 16:55:32 -080013 protected static final Double DEFAULT_CAPACITY = Double.POSITIVE_INFINITY;
14 protected Double capacity = DEFAULT_CAPACITY;
Yuta HIGUCHI181d34d2014-02-05 15:05:46 -080015
Toshio Koide2f570c12014-02-06 16:55:32 -080016 protected static final int DEFAULT_COST = 1;
17 protected int cost = DEFAULT_COST;
Jonathan Hart062a2e82014-02-03 09:41:57 -080018
Jonathan Hart891d0502014-02-10 10:04:08 -080019 /**
20 * Constructor for when a link is read from the database and the Ports
21 * already exist in the in-memory network graph.
22 * @param graph
23 * @param srcPort
24 * @param dstPort
25 */
Toshio Koide2f570c12014-02-06 16:55:32 -080026 public LinkImpl(NetworkGraph graph, Port srcPort, Port dstPort) {
Jonathan Hart062a2e82014-02-03 09:41:57 -080027 super(graph);
Toshio Koide2f570c12014-02-06 16:55:32 -080028 this.srcPort = srcPort;
29 this.dstPort = dstPort;
30 setToPorts();
31 }
32
Pavlin Radoslavov7c8f69a2014-02-19 19:01:45 -080033 @Override
34 public Switch getSrcSwitch() {
35 return srcPort.getSwitch();
36 }
37
38 @Override
39 public Port getSrcPort() {
40 return srcPort;
41 }
42
43 @Override
44 public Switch getDstSwitch() {
45 return dstPort.getSwitch();
46 }
47
48 @Override
49 public Port getDstPort() {
50 return dstPort;
51 }
52
Toshio Koide2f570c12014-02-06 16:55:32 -080053 protected void setToPorts() {
54 ((PortImpl)srcPort).setOutgoingLink(this);
Jonathan Hart4c263272014-02-13 17:41:05 -080055 ((PortImpl)dstPort).setIncomingLink(this);
Toshio Koide2f570c12014-02-06 16:55:32 -080056 }
Yuta HIGUCHI66c16812014-02-12 14:35:50 -080057
Toshio Koide2f570c12014-02-06 16:55:32 -080058 protected void unsetFromPorts() {
59 ((PortImpl)srcPort).setOutgoingLink(null);
Jonathan Hart4c263272014-02-13 17:41:05 -080060 ((PortImpl)dstPort).setIncomingLink(null);
Jonathan Hart062a2e82014-02-03 09:41:57 -080061 }
62
63 @Override
Jonathan Hart062a2e82014-02-03 09:41:57 -080064 public long getLastSeenTime() {
65 // TODO Auto-generated method stub
66 return 0;
67 }
Yuta HIGUCHI181d34d2014-02-05 15:05:46 -080068
Jonathan Hart062a2e82014-02-03 09:41:57 -080069 @Override
70 public int getCost() {
71 return cost;
72 }
Yuta HIGUCHI181d34d2014-02-05 15:05:46 -080073
Jonathan Hart062a2e82014-02-03 09:41:57 -080074 public void setCost(int cost) {
75 this.cost = cost;
76 }
77
78 @Override
Toshio Koide0c9106d2014-02-19 15:26:38 -080079 public Double getCapacity() {
80 return capacity;
81 }
82
83 public void setCapacity(Double capacity) {
84 this.capacity = capacity;
85 }
86
Toshio Koide2f570c12014-02-06 16:55:32 -080087 @Override
Toshio Koide2f570c12014-02-06 16:55:32 -080088 public String toString() {
89 return String.format("%s --(cap:%f Mbps)--> %s",
Pavlin Radoslavov7c8f69a2014-02-19 19:01:45 -080090 getSrcPort().toString(),
Toshio Koide2f570c12014-02-06 16:55:32 -080091 getCapacity(),
Pavlin Radoslavov7c8f69a2014-02-19 19:01:45 -080092 getDstPort().toString());
Jonathan Hart062a2e82014-02-03 09:41:57 -080093 }
Jonathan Hart062a2e82014-02-03 09:41:57 -080094}