mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-23 21:31:00 +02:00
ONOS-6259: Topo2 - Implement server-side highlighting model
- (Still WIP) - Cleaned up createHandlersAndOverlays() in UiWebSocket. - Augmented handlerCrossConnects to link Topo2MH to Topo2TrafficMH. - Topo2Stop event now shuts down background traffic monitoring. Change-Id: I87e7151ea813b7514521201ecffcf2c9eed22cd7
This commit is contained in:
parent
33a847b932
commit
2d7cd6fc33
@ -25,6 +25,7 @@ import org.onosproject.cluster.ClusterService;
|
|||||||
import org.onosproject.cluster.ControllerNode;
|
import org.onosproject.cluster.ControllerNode;
|
||||||
import org.onosproject.ui.GlyphConstants;
|
import org.onosproject.ui.GlyphConstants;
|
||||||
import org.onosproject.ui.UiConnection;
|
import org.onosproject.ui.UiConnection;
|
||||||
|
import org.onosproject.ui.UiExtension;
|
||||||
import org.onosproject.ui.UiExtensionService;
|
import org.onosproject.ui.UiExtensionService;
|
||||||
import org.onosproject.ui.UiMessageHandler;
|
import org.onosproject.ui.UiMessageHandler;
|
||||||
import org.onosproject.ui.UiMessageHandlerFactory;
|
import org.onosproject.ui.UiMessageHandlerFactory;
|
||||||
@ -33,6 +34,7 @@ import org.onosproject.ui.UiTopoLayoutService;
|
|||||||
import org.onosproject.ui.UiTopoOverlayFactory;
|
import org.onosproject.ui.UiTopoOverlayFactory;
|
||||||
import org.onosproject.ui.impl.topo.Topo2Jsonifier;
|
import org.onosproject.ui.impl.topo.Topo2Jsonifier;
|
||||||
import org.onosproject.ui.impl.topo.Topo2OverlayCache;
|
import org.onosproject.ui.impl.topo.Topo2OverlayCache;
|
||||||
|
import org.onosproject.ui.impl.topo.Topo2TrafficMessageHandler;
|
||||||
import org.onosproject.ui.impl.topo.Topo2ViewMessageHandler;
|
import org.onosproject.ui.impl.topo.Topo2ViewMessageHandler;
|
||||||
import org.onosproject.ui.impl.topo.UiTopoSession;
|
import org.onosproject.ui.impl.topo.UiTopoSession;
|
||||||
import org.onosproject.ui.impl.topo.model.UiSharedTopologyModel;
|
import org.onosproject.ui.impl.topo.model.UiSharedTopologyModel;
|
||||||
@ -249,6 +251,8 @@ public class UiWebSocket
|
|||||||
overlayCache = new TopoOverlayCache();
|
overlayCache = new TopoOverlayCache();
|
||||||
overlay2Cache = new Topo2OverlayCache();
|
overlay2Cache = new Topo2OverlayCache();
|
||||||
|
|
||||||
|
Map<Class<?>, UiMessageHandler> handlerInstances = new HashMap<>();
|
||||||
|
|
||||||
UiExtensionService service = directory.get(UiExtensionService.class);
|
UiExtensionService service = directory.get(UiExtensionService.class);
|
||||||
service.getExtensions().forEach(ext -> {
|
service.getExtensions().forEach(ext -> {
|
||||||
UiMessageHandlerFactory factory = ext.messageHandlerFactory();
|
UiMessageHandlerFactory factory = ext.messageHandlerFactory();
|
||||||
@ -257,33 +261,55 @@ public class UiWebSocket
|
|||||||
try {
|
try {
|
||||||
handler.init(this, directory);
|
handler.init(this, directory);
|
||||||
handler.messageTypes().forEach(type -> handlers.put(type, handler));
|
handler.messageTypes().forEach(type -> handlers.put(type, handler));
|
||||||
|
handlerInstances.put(handler.getClass(), handler);
|
||||||
|
|
||||||
// need to inject the overlay cache into topology message handler
|
|
||||||
if (handler instanceof TopologyViewMessageHandler) {
|
|
||||||
((TopologyViewMessageHandler) handler).setOverlayCache(overlayCache);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (handler instanceof Topo2ViewMessageHandler) {
|
|
||||||
((Topo2ViewMessageHandler) handler).setOverlayCache(overlay2Cache);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.warn("Unable to setup handler {} due to", handler, e);
|
log.warn("Unable to setup handler {} due to", handler, e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
UiTopoOverlayFactory overlayFactory = ext.topoOverlayFactory();
|
registerOverlays(ext);
|
||||||
if (overlayFactory != null) {
|
|
||||||
overlayFactory.newOverlays().forEach(overlayCache::add);
|
|
||||||
}
|
|
||||||
|
|
||||||
UiTopo2OverlayFactory overlay2Factory = ext.topo2OverlayFactory();
|
|
||||||
if (overlay2Factory != null) {
|
|
||||||
overlay2Factory.newOverlays().forEach(overlay2Cache::add);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
log.debug("#handlers = {}, #overlays = {}", handlers.size(),
|
|
||||||
overlayCache.size());
|
handlerCrossConnects(handlerInstances);
|
||||||
|
|
||||||
|
log.debug("#handlers = {}, #overlays = {}", handlers.size(), overlayCache.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void registerOverlays(UiExtension ext) {
|
||||||
|
UiTopoOverlayFactory overlayFactory = ext.topoOverlayFactory();
|
||||||
|
if (overlayFactory != null) {
|
||||||
|
overlayFactory.newOverlays().forEach(overlayCache::add);
|
||||||
|
}
|
||||||
|
|
||||||
|
UiTopo2OverlayFactory overlay2Factory = ext.topo2OverlayFactory();
|
||||||
|
if (overlay2Factory != null) {
|
||||||
|
overlay2Factory.newOverlays().forEach(overlay2Cache::add);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handlerCrossConnects(Map<Class<?>, UiMessageHandler> handlers) {
|
||||||
|
TopologyViewMessageHandler topomh = (TopologyViewMessageHandler)
|
||||||
|
handlers.get(TopologyViewMessageHandler.class);
|
||||||
|
if (topomh != null) {
|
||||||
|
topomh.setOverlayCache(overlayCache);
|
||||||
|
}
|
||||||
|
|
||||||
|
Topo2ViewMessageHandler topo2mh = (Topo2ViewMessageHandler)
|
||||||
|
handlers.get(Topo2ViewMessageHandler.class);
|
||||||
|
if (topo2mh != null) {
|
||||||
|
topo2mh.setOverlayCache(overlay2Cache);
|
||||||
|
|
||||||
|
// We also need a link to Topo2Traffic
|
||||||
|
Topo2TrafficMessageHandler topo2traffic = (Topo2TrafficMessageHandler)
|
||||||
|
handlers.get(Topo2TrafficMessageHandler.class);
|
||||||
|
if (topo2traffic != null) {
|
||||||
|
topo2mh.setTrafficHandler(topo2traffic);
|
||||||
|
} else {
|
||||||
|
log.error("No topo2 traffic handler found");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Destroys message handlers.
|
// Destroys message handlers.
|
||||||
@ -325,4 +351,3 @@ public class UiWebSocket
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,6 +85,13 @@ public class Topo2TrafficMessageHandler extends UiMessageHandler {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shuts down the background traffic monitoring task.
|
||||||
|
*/
|
||||||
|
void ceaseAndDesist() {
|
||||||
|
traffic.stopMonitoring();
|
||||||
|
}
|
||||||
|
|
||||||
// ==================================================================
|
// ==================================================================
|
||||||
|
|
||||||
private final class Topo2AllTraffic extends RequestHandler {
|
private final class Topo2AllTraffic extends RequestHandler {
|
||||||
|
@ -72,6 +72,7 @@ public class Topo2ViewMessageHandler extends UiMessageHandler {
|
|||||||
private UiTopoSession topoSession;
|
private UiTopoSession topoSession;
|
||||||
private Topo2Jsonifier t2json;
|
private Topo2Jsonifier t2json;
|
||||||
private Topo2OverlayCache overlay2Cache;
|
private Topo2OverlayCache overlay2Cache;
|
||||||
|
private Topo2TrafficMessageHandler trafficHandler;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -93,6 +94,15 @@ public class Topo2ViewMessageHandler extends UiMessageHandler {
|
|||||||
this.overlay2Cache = overlay2Cache;
|
this.overlay2Cache = overlay2Cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a reference to the traffic message handler.
|
||||||
|
*
|
||||||
|
* @param traffic the traffic message handler instance
|
||||||
|
*/
|
||||||
|
public void setTrafficHandler(Topo2TrafficMessageHandler traffic) {
|
||||||
|
trafficHandler = traffic;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Collection<RequestHandler> createRequestHandlers() {
|
protected Collection<RequestHandler> createRequestHandlers() {
|
||||||
@ -202,12 +212,10 @@ public class Topo2ViewMessageHandler extends UiMessageHandler {
|
|||||||
// client view has gone away; so shut down server-side processing
|
// client view has gone away; so shut down server-side processing
|
||||||
|
|
||||||
log.debug("topo2Stop: {}", payload);
|
log.debug("topo2Stop: {}", payload);
|
||||||
// TODO: tell traffic monitor to stop monitoring...
|
trafficHandler.ceaseAndDesist();
|
||||||
// this requires this handler to know about traffic handler!!
|
|
||||||
|
|
||||||
// OLD CODE DID THE FOLLOWING...
|
// OLD CODE DID THE FOLLOWING...
|
||||||
// stopSummaryMonitoring();
|
// stopSummaryMonitoring();
|
||||||
// traffic.stopMonitoring();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user