| package net.onrc.onos.core.flowmanager; |
| |
| import java.util.Set; |
| |
| import net.onrc.onos.api.flowmanager.Flow; |
| import net.onrc.onos.api.flowmanager.FlowId; |
| import net.onrc.onos.api.flowmanager.FlowState; |
| |
| /** |
| * Interface of the flow map. |
| */ |
| interface FlowMap { |
| /** |
| * Gets {@link Flow} object having {@link FlowId} as its ID from the map. |
| * |
| * @param id the {@link FlowId} to be used for getting the object |
| * @return {@link Flow} object if exists, null otherwise |
| */ |
| Flow get(FlowId id); |
| |
| /** |
| * Puts {@link Flow} object to the map. |
| * |
| * @param flow the {@link Flow} object |
| * @return true if the object was successfully added |
| */ |
| boolean put(Flow flow); |
| |
| /** |
| * Removes {@link Flow} object from the map. |
| * |
| * @param id the {@link FlowId} to be used for removing the object |
| * @return the removed {@link Flow} object if exists, null otherwise |
| */ |
| Flow remove(FlowId id); |
| |
| /** |
| * Gets all {@link Flow} objects existing in the map. |
| * <p> |
| * The changes to the returned set does not affect the original map. |
| * |
| * @return a set of {@link Flow} objects |
| */ |
| Set<Flow> getAll(); |
| |
| /** |
| * Sets {@link FlowState} to the specified {@link Flow} object. |
| * |
| * @param id the {@link FlowId} of the {@link Flow} |
| * @param state the {@link FlowState} to be set |
| * @param expectedState the {@link FlowState} expected as the previous state |
| * @return true if the ID existed, the previous state was the expected state |
| * and successfully updated the state |
| */ |
| boolean setState(FlowId id, FlowState state, FlowState expectedState); |
| |
| /** |
| * Gets {@link FlowState} of the specified {@link Flow} object. |
| * |
| * @param id the {@link FlowId} of the {@link Flow} |
| * @return the {@link FlowState} of the {@link Flow} or null if the |
| * {@link Flow} does not exist |
| */ |
| FlowState getState(FlowId id); |
| |
| /** |
| * Adds a listener for listening events related to the map. |
| * |
| * @param listener the {@link FlowMapEventListener} to be added |
| */ |
| void addListener(FlowMapEventListener listener); |
| |
| /** |
| * Removes a listener for listening events related to the map. |
| * |
| * @param listener the {@link FlowMapEventListener} to be removed |
| */ |
| void removeListener(FlowMapEventListener listener); |
| } |