Added ability for commands to post properties to be used as params of other commands.
Starting to add monitor GUI.
Change-Id: I9fcf1568d0de27dfd1c19e875f8646fd731a1dfa
diff --git a/utils/stc/src/main/java/org/onlab/stc/MonitorWebSocketServlet.java b/utils/stc/src/main/java/org/onlab/stc/MonitorWebSocketServlet.java
index 6796c6b..a870500 100644
--- a/utils/stc/src/main/java/org/onlab/stc/MonitorWebSocketServlet.java
+++ b/utils/stc/src/main/java/org/onlab/stc/MonitorWebSocketServlet.java
@@ -15,6 +15,7 @@
*/
package org.onlab.stc;
+import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.io.ByteStreams;
import com.google.common.net.MediaType;
import org.eclipse.jetty.websocket.WebSocket;
@@ -34,11 +35,13 @@
/**
* Web socket servlet capable of creating web sockets for the STC monitor.
*/
-public class MonitorWebSocketServlet extends WebSocketServlet {
+public class MonitorWebSocketServlet extends WebSocketServlet
+ implements MonitorDelegate {
private static final long PING_DELAY_MS = 5000;
private static final String DOT = ".";
+ private static Monitor monitor;
private static MonitorWebSocketServlet instance;
private final Set<MonitorWebSocket> sockets = new HashSet<>();
@@ -46,6 +49,15 @@
private final TimerTask pruner = new Pruner();
/**
+ * Binds the shared process flow monitor.
+ *
+ * @param m process monitor reference
+ */
+ public static void setMonitor(Monitor m) {
+ monitor = m;
+ }
+
+ /**
* Closes all currently open monitor web-sockets.
*/
public static void closeAll() {
@@ -59,7 +71,7 @@
public void init() throws ServletException {
super.init();
instance = this;
- System.out.println("Yo!!!!");
+ monitor.setDelegate(this);
timer.schedule(pruner, PING_DELAY_MS, PING_DELAY_MS);
}
@@ -92,14 +104,20 @@
@Override
public WebSocket doWebSocketConnect(HttpServletRequest request, String protocol) {
- System.out.println("Wazup????");
- MonitorWebSocket socket = new MonitorWebSocket();
+ MonitorWebSocket socket = new MonitorWebSocket(monitor);
synchronized (sockets) {
sockets.add(socket);
}
return socket;
}
+ @Override
+ public void notify(ObjectNode event) {
+ if (instance != null) {
+ instance.sockets.forEach(ws -> ws.sendMessage(event));
+ }
+ }
+
// Task for pruning web-sockets that are idle.
private class Pruner extends TimerTask {
@Override