alshabib

finished stats service

Change-Id: Ic1edef3e9cabefb2cbfdd8eecc465b3fa7f96bd9
...@@ -20,7 +20,6 @@ import org.onlab.onos.net.statistic.Load; ...@@ -20,7 +20,6 @@ import org.onlab.onos.net.statistic.Load;
20 import org.onlab.onos.net.statistic.StatisticService; 20 import org.onlab.onos.net.statistic.StatisticService;
21 import org.onlab.onos.net.statistic.StatisticStore; 21 import org.onlab.onos.net.statistic.StatisticStore;
22 import org.slf4j.Logger; 22 import org.slf4j.Logger;
23 -
24 import java.util.Set; 23 import java.util.Set;
25 24
26 import static org.slf4j.LoggerFactory.getLogger; 25 import static org.slf4j.LoggerFactory.getLogger;
...@@ -68,17 +67,52 @@ public class StatisticManager implements StatisticService { ...@@ -68,17 +67,52 @@ public class StatisticManager implements StatisticService {
68 67
69 @Override 68 @Override
70 public Link max(Path path) { 69 public Link max(Path path) {
71 - return null; 70 + if (path.links().isEmpty()) {
71 + return null;
72 + }
73 + Load maxLoad = new DefaultLoad();
74 + Link maxLink = null;
75 + for (Link link : path.links()) {
76 + Load load = loadInternal(link.src());
77 + if (load.rate() > maxLoad.rate()) {
78 + maxLoad = load;
79 + maxLink = link;
80 + }
81 + }
82 + return maxLink;
72 } 83 }
73 84
74 @Override 85 @Override
75 public Link min(Path path) { 86 public Link min(Path path) {
76 - return null; 87 + if (path.links().isEmpty()) {
88 + return null;
89 + }
90 + Load minLoad = new DefaultLoad();
91 + Link minLink = null;
92 + for (Link link : path.links()) {
93 + Load load = loadInternal(link.src());
94 + if (load.rate() < minLoad.rate()) {
95 + minLoad = load;
96 + minLink = link;
97 + }
98 + }
99 + return minLink;
77 } 100 }
78 101
79 @Override 102 @Override
80 public FlowRule highestHitter(ConnectPoint connectPoint) { 103 public FlowRule highestHitter(ConnectPoint connectPoint) {
81 - return null; 104 + Set<FlowEntry> hitters = statisticStore.getCurrentStatistic(connectPoint);
105 + if (hitters.isEmpty()) {
106 + return null;
107 + }
108 +
109 + FlowEntry max = hitters.iterator().next();
110 + for (FlowEntry entry : hitters) {
111 + if (entry.bytes() > max.bytes()) {
112 + max = entry;
113 + }
114 + }
115 + return max;
82 } 116 }
83 117
84 private Load loadInternal(ConnectPoint connectPoint) { 118 private Load loadInternal(ConnectPoint connectPoint) {
......