package net.onrc.onos.ofcontroller.networkgraph;

import net.floodlightcontroller.core.module.IFloodlightService;

/**
 * Interface for providing the Network Graph Service to other modules.
 */
public interface INetworkGraphService extends IFloodlightService {
	/**
	 * Allows a module to get a reference to the global network graph object.
	 * @return
	 */
    public NetworkGraph getNetworkGraph();

    public void registerNetworkGraphListener(INetworkGraphListener listener);
    public void deregisterNetworkGraphListener(INetworkGraphListener listener);

    /**
     * Allows a module to get a reference to the southbound interface to
     * the network graph.
     * TODO Figure out how to hide the southbound interface from
     * applications/modules that shouldn't touch it
     * @return
     */
    public NetworkGraphDiscoveryInterface getNetworkGraphDiscoveryInterface();
}
