From 6638be41d722850165f7b7b5c65a80731f9215de Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Thu, 6 Jun 2019 15:55:01 +0100 Subject: [PATCH] More monitor --- packages/server/src/index.js | 3 ++ packages/server/src/monitor.js | 50 ++++++++++++++++++++++++++++++++-- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/packages/server/src/index.js b/packages/server/src/index.js index 8c0511c..0d75d53 100644 --- a/packages/server/src/index.js +++ b/packages/server/src/index.js @@ -164,4 +164,7 @@ function spawnMonitorAppServer(port) { spawn named 'monitorApp' { during P.POAScope($connId, $scope) assert P.Proposal('monitor', P.POAScope(connId, scope)); on message P.Envelope('monitor', P.Disconnect($connId)) send P.Disconnect(connId); + during Federation.ManagementScope($scope) { + assert P.Proposal('monitor', Federation.ManagementScope(scope)); + } } diff --git a/packages/server/src/monitor.js b/packages/server/src/monitor.js index 05ddd96..2614a51 100644 --- a/packages/server/src/monitor.js +++ b/packages/server/src/monitor.js @@ -7,12 +7,22 @@ const UI = activate require("@syndicate-lang/driver-browser-ui"); const { WSServer, ToServer, FromServer, ServerConnected } = activate require("./client"); const P = activate require("./internal_protocol"); +const Federation = require("./federation"); + +assertion type DetectedOverlay(scope); +assertion type AddressMap(from, nodeId, to); + spawn { const ui = new UI.Anchor(); assert ui.html('body',
-

Server monitor

-
+

Server monitor

+

Local scopes

+
+

Federated scopes

+
+

Overlays

+
); const url = (function () { @@ -40,5 +50,41 @@ spawn { } } } + + during FromServer(addr, Federation.ManagementScope($scope)) { + const addr = WSServer(url, scope); + during ServerConnected(addr) { + const ui = new UI.Anchor(); + assert ui.html('#federated_scopes', +
+

Management scope {scope}

+ +
); + during FromServer(addr, P.FederatedLink($id, $federatedScope)) { + assert DetectedOverlay(federatedScope); + const ui = new UI.Anchor(); + assert ui.html(`#federated_scopes div.fs_${scope} ul`, +
  • FederatedLink: session {id.toString()} + scope {federatedScope.toString()}
  • ); + } + } + } + + during DetectedOverlay($scope) { + const addr = WSServer(url, scope); + during ServerConnected(addr) { + const ui = new UI.Anchor(); + assert ui.html('#overlays', +
    +

    Overlay {scope}

    + +
    ); + during FromServer(addr, $item(AddressMap(_, _, _))) { + const ui = new UI.Anchor(); + assert ui.html(`#overlays div.o_${scope} ul`, +
  • {item && item.toString()}
  • ); + } + } + } } }