/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.routing;
import de.rcenvironment.core.communication.common.NetworkGraph;
import de.rcenvironment.core.communication.routing.internal.LinkStateRoutingProtocolManager;
/**
* A service that provides message routing operations.
*
* TODO 3.0.0: rework this interface; low cohesion
*
* @author Phillip Kroll
* @author Robert Mischke
*/
public interface NetworkRoutingService {
/**
* @return the current unfiltered ("raw") network/topology graph
*/
NetworkGraph getRawNetworkGraph();
/**
* @return the current network/topology graph, filtered for reachable nodes
*/
NetworkGraph getReachableNetworkGraph();
/**
* Returns a human-readable summary of the current network state.
*
* @param type the type of formatting to use; currently, "info" and "graphviz" are supported
*
* @return the network summary text representation
*/
String getFormattedNetworkInformation(String type);
/**
* Makes the {@link LinkStateRoutingProtocolManager} available to other services.
*
* TODO refactor?
*
* @return the protocol manager
*/
LinkStateRoutingProtocolManager getProtocolManager();
}