Added detection of traffic flowing using StatisticService.
Change-Id: I2044ec16fd722d953d0e2b2c955e4da2b1dab663
diff --git a/web/gui/src/main/java/org/onlab/onos/gui/GuiWebSocketServlet.java b/web/gui/src/main/java/org/onlab/onos/gui/GuiWebSocketServlet.java
index aa00a863..37120d9 100644
--- a/web/gui/src/main/java/org/onlab/onos/gui/GuiWebSocketServlet.java
+++ b/web/gui/src/main/java/org/onlab/onos/gui/GuiWebSocketServlet.java
@@ -37,7 +37,7 @@
private ServiceDirectory directory = new DefaultServiceDirectory();
- private final Set<TopologyWebSocket> sockets = new HashSet<>();
+ private final Set<TopologyViewWebSocket> sockets = new HashSet<>();
private final Timer timer = new Timer();
private final TimerTask pruner = new Pruner();
@@ -49,7 +49,7 @@
@Override
public WebSocket doWebSocketConnect(HttpServletRequest request, String protocol) {
- TopologyWebSocket socket = new TopologyWebSocket(directory);
+ TopologyViewWebSocket socket = new TopologyViewWebSocket(directory);
synchronized (sockets) {
sockets.add(socket);
}
@@ -61,9 +61,9 @@
@Override
public void run() {
synchronized (sockets) {
- Iterator<TopologyWebSocket> it = sockets.iterator();
+ Iterator<TopologyViewWebSocket> it = sockets.iterator();
while (it.hasNext()) {
- TopologyWebSocket socket = it.next();
+ TopologyViewWebSocket socket = it.next();
if (socket.isIdle()) {
it.remove();
socket.close();
diff --git a/web/gui/src/main/java/org/onlab/onos/gui/TopologyMessages.java b/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewMessages.java
similarity index 96%
rename from web/gui/src/main/java/org/onlab/onos/gui/TopologyMessages.java
rename to web/gui/src/main/java/org/onlab/onos/gui/TopologyViewMessages.java
index cad7228..dcc2355 100644
--- a/web/gui/src/main/java/org/onlab/onos/gui/TopologyMessages.java
+++ b/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewMessages.java
@@ -49,6 +49,8 @@
import org.onlab.onos.net.link.LinkEvent;
import org.onlab.onos.net.link.LinkService;
import org.onlab.onos.net.provider.ProviderId;
+import org.onlab.onos.net.statistic.Load;
+import org.onlab.onos.net.statistic.StatisticService;
import org.onlab.osgi.ServiceDirectory;
import org.onlab.packet.IpAddress;
import org.slf4j.Logger;
@@ -75,9 +77,9 @@
/**
* Facility for creating messages bound for the topology viewer.
*/
-public abstract class TopologyMessages {
+public abstract class TopologyViewMessages {
- protected static final Logger log = LoggerFactory.getLogger(TopologyMessages.class);
+ protected static final Logger log = LoggerFactory.getLogger(TopologyViewMessages.class);
private static final ProviderId PID = new ProviderId("core", "org.onlab.onos.core", true);
private static final String COMPACT = "%s/%s-%s/%s";
@@ -89,7 +91,7 @@
protected final HostService hostService;
protected final MastershipService mastershipService;
protected final IntentService intentService;
-// protected final StatisticService statService;
+ protected final StatisticService statService;
protected final ObjectMapper mapper = new ObjectMapper();
@@ -101,7 +103,7 @@
*
* @param directory service directory
*/
- protected TopologyMessages(ServiceDirectory directory) {
+ protected TopologyViewMessages(ServiceDirectory directory) {
this.directory = checkNotNull(directory, "Directory cannot be null");
clusterService = directory.get(ClusterService.class);
deviceService = directory.get(DeviceService.class);
@@ -109,7 +111,7 @@
hostService = directory.get(HostService.class);
mastershipService = directory.get(MastershipService.class);
intentService = directory.get(IntentService.class);
-// statService = directory.get(StatisticService.class);
+ statService = directory.get(StatisticService.class);
}
// Retrieves the payload from the specified event.
@@ -408,14 +410,15 @@
if (links != null) {
ArrayNode labels = mapper.createArrayNode();
- boolean hasTraffic = true; // FIXME
+ boolean hasTraffic = false;
for (Link link : links) {
linksNode.add(compactLinkString(link));
-// Load load = statService.load(link);
+ Load load = statService.load(link);
String label = "";
-// if (load.rate() > 0) {
-// label = load.toString();
-// }
+ if (load.rate() > 0) {
+ hasTraffic = true;
+ label = load.toString();
+ }
labels.add(label);
}
pathNode.put("class", hasTraffic ? type + " animated" : type);
diff --git a/web/gui/src/main/java/org/onlab/onos/gui/TopologyWebSocket.java b/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewWebSocket.java
similarity index 98%
rename from web/gui/src/main/java/org/onlab/onos/gui/TopologyWebSocket.java
rename to web/gui/src/main/java/org/onlab/onos/gui/TopologyViewWebSocket.java
index af28086..cc5756c 100644
--- a/web/gui/src/main/java/org/onlab/onos/gui/TopologyWebSocket.java
+++ b/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewWebSocket.java
@@ -66,8 +66,8 @@
/**
* Web socket capable of interacting with the GUI topology view.
*/
-public class TopologyWebSocket
- extends TopologyMessages
+public class TopologyViewWebSocket
+ extends TopologyViewMessages
implements WebSocket.OnTextMessage, WebSocket.OnControl {
private static final long MAX_AGE_MS = 15000;
@@ -78,7 +78,7 @@
private static final String APP_ID = "org.onlab.onos.gui";
- private static final long TRAFFIC_FREQUENCY_SEC = 5000;
+ private static final long TRAFFIC_FREQUENCY_SEC = 1000;
private final ApplicationId appId;
@@ -104,7 +104,7 @@
*
* @param directory service directory
*/
- public TopologyWebSocket(ServiceDirectory directory) {
+ public TopologyViewWebSocket(ServiceDirectory directory) {
super(directory);
appId = directory.get(CoreService.class).registerApplication(APP_ID);
}