blob: b1fc9b855a123fb830f31d3a5c17407afc550563 [file] [log] [blame]
Jonathan Hart062a2e82014-02-03 09:41:57 -08001package net.onrc.onos.ofcontroller.networkgraph;
2
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
Toshio Koide2f570c12014-02-06 16:55:32 -080019 public LinkImpl(NetworkGraph graph, Port srcPort, Port dstPort) {
Jonathan Hart062a2e82014-02-03 09:41:57 -080020 super(graph);
Toshio Koide2f570c12014-02-06 16:55:32 -080021 this.srcPort = srcPort;
22 this.dstPort = dstPort;
23 setToPorts();
24 }
25
26 protected void setToPorts() {
27 ((PortImpl)srcPort).setOutgoingLink(this);
28 ((PortImpl)srcPort).setIncomingLink(this);
29 }
30
31 protected void unsetFromPorts() {
32 ((PortImpl)srcPort).setOutgoingLink(null);
33 ((PortImpl)srcPort).setIncomingLink(null);
Jonathan Hart062a2e82014-02-03 09:41:57 -080034 }
35
36 @Override
37 public Port getSourcePort() {
Toshio Koide2f570c12014-02-06 16:55:32 -080038 return srcPort;
Jonathan Hart062a2e82014-02-03 09:41:57 -080039 }
40
41 @Override
42 public Port getDestinationPort() {
Toshio Koide2f570c12014-02-06 16:55:32 -080043 return dstPort;
Jonathan Hart062a2e82014-02-03 09:41:57 -080044 }
45
46 @Override
47 public Switch getSourceSwitch() {
Toshio Koide2f570c12014-02-06 16:55:32 -080048 return srcPort.getSwitch();
Jonathan Hart062a2e82014-02-03 09:41:57 -080049 }
50
51 @Override
52 public Switch getDestinationSwitch() {
Toshio Koide2f570c12014-02-06 16:55:32 -080053 return dstPort.getSwitch();
Jonathan Hart062a2e82014-02-03 09:41:57 -080054 }
55
56 @Override
57 public long getLastSeenTime() {
58 // TODO Auto-generated method stub
59 return 0;
60 }
Yuta HIGUCHI181d34d2014-02-05 15:05:46 -080061
Jonathan Hart062a2e82014-02-03 09:41:57 -080062 @Override
63 public int getCost() {
64 return cost;
65 }
Yuta HIGUCHI181d34d2014-02-05 15:05:46 -080066
Jonathan Hart062a2e82014-02-03 09:41:57 -080067 public void setCost(int cost) {
68 this.cost = cost;
69 }
70
71 @Override
Toshio Koide2f570c12014-02-06 16:55:32 -080072 public Long getSourceSwitchDpid() {
73 return srcPort.getSwitch().getDpid();
Jonathan Hart062a2e82014-02-03 09:41:57 -080074 }
75
76 @Override
Toshio Koide2f570c12014-02-06 16:55:32 -080077 public Long getSourcePortNumber() {
Yuta HIGUCHIe1d92762014-02-06 12:05:52 -080078 return srcPort.getNumber();
Jonathan Hart062a2e82014-02-03 09:41:57 -080079 }
80
Toshio Koide2f570c12014-02-06 16:55:32 -080081 @Override
82 public Long getDestinationSwitchDpid() {
83 return dstPort.getSwitch().getDpid();
Jonathan Hart062a2e82014-02-03 09:41:57 -080084 }
85
86 @Override
Toshio Koide2f570c12014-02-06 16:55:32 -080087 public Long getDestinationPortNumber() {
Yuta HIGUCHIe1d92762014-02-06 12:05:52 -080088 return dstPort.getNumber();
Jonathan Hart062a2e82014-02-03 09:41:57 -080089 }
90
Toshio Koide2f570c12014-02-06 16:55:32 -080091 @Override
92 public Double getCapacity() {
93 return capacity;
94 }
95
96 @Override
97 public String toString() {
98 return String.format("%s --(cap:%f Mbps)--> %s",
99 getSourcePort().toString(),
100 getCapacity(),
101 getDestinationPort().toString());
Jonathan Hart062a2e82014-02-03 09:41:57 -0800102 }
103
Toshio Koide2f570c12014-02-06 16:55:32 -0800104 public void setCapacity(Double capacity) {
105 this.capacity = capacity;
106 }
Jonathan Hart062a2e82014-02-03 09:41:57 -0800107}