/** * Provides Flow Reconcile service to other modules that need to reconcile * flows. */ package net.floodlightcontroller.flowcache; import net.floodlightcontroller.core.module.IFloodlightService; import net.floodlightcontroller.devicemanager.IDevice; import net.floodlightcontroller.flowcache.IFlowCacheService.FCQueryEvType; public interface IFlowReconcileService extends IFloodlightService { /** * Add a flow reconcile listener * @param listener The module that can reconcile flows */ public void addFlowReconcileListener(IFlowReconcileListener listener); /** * Remove a flow reconcile listener * @param listener The module that no longer reconcile flows */ public void removeFlowReconcileListener(IFlowReconcileListener listener); /** * Remove all flow reconcile listeners */ public void clearFlowReconcileListeners(); /** * Reconcile flow. Returns false if no modified flow-mod need to be * programmed if cluster ID is providced then pnly flows in the given * cluster are reprogrammed * * @param ofmRcIn the ofm rc in */ public void reconcileFlow(OFMatchReconcile ofmRcIn); /** * Updates the flows to a device after the device moved to a new location * <p> * Queries the flow-cache to get all the flows destined to the given device. * Reconciles each of these flows by potentially reprogramming them to its * new attachment point * * @param device device that has moved * @param handler handler to process the flows * @param fcEvType Event type that triggered the update * */ public void updateFlowForDestinationDevice(IDevice device, IFlowQueryHandler handler, FCQueryEvType fcEvType); /** * Updates the flows from a device * <p> * Queries the flow-cache to get all the flows source from the given device. * Reconciles each of these flows by potentially reprogramming them to its * new attachment point * * @param device device where the flow originates * @param handler handler to process the flows * @param fcEvType Event type that triggered the update * */ public void updateFlowForSourceDevice(IDevice device, IFlowQueryHandler handler, FCQueryEvType fcEvType); /** * Generic flow query handler to insert FlowMods into the reconcile pipeline. * @param flowResp */ public void flowQueryGenericHandler(FlowCacheQueryResp flowResp); }