package net.onrc.onos.apps.forwarding;

import java.util.Collection;

import net.floodlightcontroller.core.module.IFloodlightService;
import net.onrc.onos.core.util.FlowPath;

/**
 * Temporary interface that allows the Forwarding module to be
 * notified when a flow has been installed.
 * 
 * This should be refactored to a listener framework in the future.
 * @author jono
 *
 */
public interface IForwardingService extends IFloodlightService {
	/**
	 * Notify the Forwarding module that a collection of flows has been
	 * installed in the network.
	 *
	 * @param installedFlowPaths the collection of FlowPaths that have
	 * been installed in the network.
	 */
	public void flowsInstalled(Collection<FlowPath> installedFlowPaths);
	
	/**
	 * Notify the Forwarding module that a flow has expired and been 
	 * removed from the network.
	 * 
	 * @param removedFlowPath The FlowPath that was removed
	 */
	public void flowRemoved(FlowPath removedFlowPath);
}
