diff options
Diffstat (limited to 'framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovMessageHandler.java')
-rw-r--r-- | framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovMessageHandler.java | 337 |
1 files changed, 0 insertions, 337 deletions
diff --git a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovMessageHandler.java b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovMessageHandler.java deleted file mode 100644 index 65e3489f..00000000 --- a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovMessageHandler.java +++ /dev/null @@ -1,337 +0,0 @@ -#set( $symbol_pound = '#' ) -#set( $symbol_dollar = '$' ) -#set( $symbol_escape = '\' ) -/* - * Copyright 2014,2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package ${package}; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.base.Strings; -import com.google.common.collect.ImmutableSet; -import org.onlab.osgi.ServiceDirectory; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Element; -import org.onosproject.net.HostId; -import org.onosproject.net.Link; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.host.HostService; -import org.onosproject.net.link.LinkService; -import org.onosproject.ui.RequestHandler; -import org.onosproject.ui.UiConnection; -import org.onosproject.ui.UiMessageHandler; -import org.onosproject.ui.topo.DeviceHighlight; -import org.onosproject.ui.topo.Highlights; -import org.onosproject.ui.topo.NodeBadge; -import org.onosproject.ui.topo.NodeBadge.Status; -import org.onosproject.ui.topo.TopoJson; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; -import java.util.Timer; -import java.util.TimerTask; - -/** - * Skeletal ONOS UI Topology-Overlay message handler. - */ -public class AppUiTopovMessageHandler extends UiMessageHandler { - - private static final String SAMPLE_TOPOV_DISPLAY_START = "sampleTopovDisplayStart"; - private static final String SAMPLE_TOPOV_DISPLAY_UPDATE = "sampleTopovDisplayUpdate"; - private static final String SAMPLE_TOPOV_DISPLAY_STOP = "sampleTopovDisplayStop"; - - private static final String ID = "id"; - private static final String MODE = "mode"; - - private static final long UPDATE_PERIOD_MS = 1000; - - private static final Link[] EMPTY_LINK_SET = new Link[0]; - - private enum Mode { IDLE, MOUSE, LINK } - - private final Logger log = LoggerFactory.getLogger(getClass()); - - private DeviceService deviceService; - private HostService hostService; - private LinkService linkService; - - private final Timer timer = new Timer("sample-overlay"); - private TimerTask demoTask = null; - private Mode currentMode = Mode.IDLE; - private Element elementOfNote; - private Link[] linkSet = EMPTY_LINK_SET; - private int linkIndex; - - - // ===============-=-=-=-=-=-======================-=-=-=-=-=-=-================================ - - - @Override - public void init(UiConnection connection, ServiceDirectory directory) { - super.init(connection, directory); - deviceService = directory.get(DeviceService.class); - hostService = directory.get(HostService.class); - linkService = directory.get(LinkService.class); - } - - @Override - protected Collection<RequestHandler> createRequestHandlers() { - return ImmutableSet.of( - new DisplayStartHandler(), - new DisplayUpdateHandler(), - new DisplayStopHandler() - ); - } - - // === ------------------------- - // === Handler classes - - private final class DisplayStartHandler extends RequestHandler { - public DisplayStartHandler() { - super(SAMPLE_TOPOV_DISPLAY_START); - } - - @Override - public void process(long sid, ObjectNode payload) { - String mode = string(payload, MODE); - - log.debug("Start Display: mode [{}]", mode); - clearState(); - clearForMode(); - - switch (mode) { - case "mouse": - currentMode = Mode.MOUSE; - cancelTask(); - sendMouseData(); - break; - - case "link": - currentMode = Mode.LINK; - scheduleTask(); - initLinkSet(); - sendLinkData(); - break; - - default: - currentMode = Mode.IDLE; - cancelTask(); - break; - } - } - } - - private final class DisplayUpdateHandler extends RequestHandler { - public DisplayUpdateHandler() { - super(SAMPLE_TOPOV_DISPLAY_UPDATE); - } - - @Override - public void process(long sid, ObjectNode payload) { - String id = string(payload, ID); - log.debug("Update Display: id [{}]", id); - if (!Strings.isNullOrEmpty(id)) { - updateForMode(id); - } else { - clearForMode(); - } - } - } - - private final class DisplayStopHandler extends RequestHandler { - public DisplayStopHandler() { - super(SAMPLE_TOPOV_DISPLAY_STOP); - } - - @Override - public void process(long sid, ObjectNode payload) { - log.debug("Stop Display"); - cancelTask(); - clearState(); - clearForMode(); - } - } - - // === ------------ - - private void clearState() { - currentMode = Mode.IDLE; - elementOfNote = null; - linkSet = EMPTY_LINK_SET; - } - - private void updateForMode(String id) { - log.debug("host service: {}", hostService); - log.debug("device service: {}", deviceService); - - try { - HostId hid = HostId.hostId(id); - log.debug("host id {}", hid); - elementOfNote = hostService.getHost(hid); - log.debug("host element {}", elementOfNote); - - } catch (Exception e) { - try { - DeviceId did = DeviceId.deviceId(id); - log.debug("device id {}", did); - elementOfNote = deviceService.getDevice(did); - log.debug("device element {}", elementOfNote); - - } catch (Exception e2) { - log.debug("Unable to process ID [{}]", id); - elementOfNote = null; - } - } - - switch (currentMode) { - case MOUSE: - sendMouseData(); - break; - - case LINK: - sendLinkData(); - break; - - default: - break; - } - - } - - private void clearForMode() { - sendHighlights(new Highlights()); - } - - private void sendHighlights(Highlights highlights) { - sendMessage(TopoJson.highlightsMessage(highlights)); - } - - - private void sendMouseData() { - if (elementOfNote != null && elementOfNote instanceof Device) { - DeviceId devId = (DeviceId) elementOfNote.id(); - Set<Link> links = linkService.getDeviceEgressLinks(devId); - Highlights highlights = fromLinks(links, devId); - addDeviceBadge(highlights, devId, links.size()); - sendHighlights(highlights); - } - // Note: could also process Host, if available - } - - private void addDeviceBadge(Highlights h, DeviceId devId, int n) { - DeviceHighlight dh = new DeviceHighlight(devId.toString()); - dh.setBadge(createBadge(n)); - h.add(dh); - } - - private NodeBadge createBadge(int n) { - Status status = n > 3 ? Status.ERROR : Status.WARN; - String noun = n > 3 ? "(critical)" : "(problematic)"; - String msg = "Egress links: " + n + " " + noun; - return NodeBadge.number(status, n, msg); - } - - private Highlights fromLinks(Set<Link> links, DeviceId devId) { - DemoLinkMap linkMap = new DemoLinkMap(); - if (links != null) { - log.debug("Processing {} links", links.size()); - links.forEach(linkMap::add); - } else { - log.debug("No egress links found for device {}", devId); - } - - Highlights highlights = new Highlights(); - - for (DemoLink dlink : linkMap.biLinks()) { - dlink.makeImportant().setLabel("Yo!"); - highlights.add(dlink.highlight(null)); - } - return highlights; - } - - private void initLinkSet() { - Set<Link> links = new HashSet<>(); - for (Link link : linkService.getActiveLinks()) { - links.add(link); - } - linkSet = links.toArray(new Link[links.size()]); - linkIndex = 0; - log.debug("initialized link set to {}", linkSet.length); - } - - private void sendLinkData() { - DemoLinkMap linkMap = new DemoLinkMap(); - for (Link link : linkSet) { - linkMap.add(link); - } - DemoLink dl = linkMap.add(linkSet[linkIndex]); - dl.makeImportant().setLabel(Integer.toString(linkIndex)); - log.debug("sending link data (index {})", linkIndex); - - linkIndex += 1; - if (linkIndex >= linkSet.length) { - linkIndex = 0; - } - - Highlights highlights = new Highlights(); - for (DemoLink dlink : linkMap.biLinks()) { - highlights.add(dlink.highlight(null)); - } - - sendHighlights(highlights); - } - - private synchronized void scheduleTask() { - if (demoTask == null) { - log.debug("Starting up demo task..."); - demoTask = new DisplayUpdateTask(); - timer.schedule(demoTask, UPDATE_PERIOD_MS, UPDATE_PERIOD_MS); - } else { - log.debug("(demo task already running"); - } - } - - private synchronized void cancelTask() { - if (demoTask != null) { - demoTask.cancel(); - demoTask = null; - } - } - - - private class DisplayUpdateTask extends TimerTask { - @Override - public void run() { - try { - switch (currentMode) { - case LINK: - sendLinkData(); - break; - - default: - break; - } - } catch (Exception e) { - log.warn("Unable to process demo task: {}", e.getMessage()); - log.debug("Oops", e); - } - } - } - -}
\ No newline at end of file |