blob: edd3c85eb8c4dca04a50e683e54cb25f391ca797 [file] [log] [blame]
package net.onrc.onos.api.flowmanager;
import java.util.Collection;
import java.util.EventListener;
import net.onrc.onos.api.batchoperation.BatchOperation;
/**
* An interface class for flow manager. The role of the flow manager is to
* manage a set of Match-Action entries based on the specified IFlow objects.
* <p>
* It compiles accepted IFlow objects to Match-Action entries by calculating the
* match-action operation phases and allocating resources based on the
* constrains described in the IFlow objects, and executes calculated phases
* using Match-Action Service.
* <p>
* TODO: add more getter with filter for IFlow objects.
*/
public interface IFlowManagerService {
/**
* Adds IFlow object, calculates match-action plan and executes it.
*
* @param flow IFlow object to be added.
* @return true if succeeded, false otherwise.
*/
boolean addFlow(IFlow flow);
/**
* Removes IFlow object, calculates match-action plan and executes it.
*
* @param id ID for IFlow object to be removed.
* @return true if succeeded, false otherwise.
*/
boolean removeFlow(String id);
/**
* Updates IFlow object, calculates match-action plan and executes it.
* <p>
* The IFlow object having the ID which is the same to the ID of the IFlow
* object specified by the parameter will be updated.
*
* @param flow new IFlow object for the update.
* @return true if succeeded, false otherwise.
*/
boolean updateFlow(IFlow flow);
/**
* Gets IFlow object.
*
* @param id ID of IFlow object.
* @return IFlow object if found, null otherwise.
*/
IFlow getFlow(String id);
/**
* Gets All IFlow objects.
*
* @return the collection of IFlow objects.
*/
Collection<IFlow> getFlows();
/**
* Executes batch operation of IFlow object.
*
* @param ops FlowOperations to be executed.
* @return true if succeeded, false otherwise.
*/
boolean executeBatch(BatchOperation<IFlow> ops);
/**
* Sets a conflict detection policy.
*
* @param policy ConflictDetectionPolicy object to be set.
*/
void setConflictDetectionPolicy(ConflictDetectionPolicy policy);
/**
* Gets the conflict detection policy.
*
* @return ConflictDetectionPolicy object being applied currently.
*/
ConflictDetectionPolicy getConflictDetectionPolicy();
/**
* Adds event listener to this service.
*
* @param listener EventListener to be added.
*/
void addEventListener(EventListener listener);
/**
* Removes event listener from this service.
*
* @param listener EventListener to be removed.
*/
void removeEventListener(EventListener listener);
}