/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.communication.model; import java.util.List; import java.util.Map; import java.util.Set; import de.rcenvironment.core.communication.common.NetworkGraph; import de.rcenvironment.core.communication.common.NetworkGraphLink; import de.rcenvironment.core.communication.common.NetworkGraphNode; import de.rcenvironment.core.communication.common.InstanceNodeSessionId; import de.rcenvironment.core.communication.routing.internal.v2.NoRouteToNodeException; /** * Provides routing information of a {@link NetworkGraph}. This includes single-query access to a routing table, and information about the * routing spanning tree. * * @author Robert Mischke */ public interface NetworkRoutingInformation { /** * @return the set of all nodes that are reachable from the local node of the source graph */ Set<InstanceNodeSessionId> getReachableNodes(); /** * @param targetNodeId the id of the network node to contact * @return the first link of the shortes path to the target node * @throws NoRouteToNodeException if the target node is either the local node, or an unreachable node */ NetworkGraphLink getNextLinkTowards(InstanceNodeSessionId targetNodeId) throws NoRouteToNodeException; /** * @param targetNode the network node to contact * @return the first link of the shortes path to the target node * @throws NoRouteToNodeException if the target node is either the local node, or an unreachable node */ NetworkGraphLink getNextLinkTowards(NetworkGraphNode targetNode) throws NoRouteToNodeException; /** * @param destination the target node's id * @return a full path to the target node; used for unit testing */ List<? extends NetworkGraphLink> getRouteTo(InstanceNodeSessionId destination); /** * @return the set of links in the routing spanning tree */ Set<NetworkGraphLink> getSpanningTreeLinks(); /** * @return the set of outgoing links for each node in the routing spanning tree */ Map<InstanceNodeSessionId, List<NetworkGraphLink>> getSpanningTreeLinkMap(); }