blob: b159661737edb1ff2d1c474105443a4c80c5d95b [file] [log] [blame]
Pavlin Radoslavov9e5344c2013-02-18 09:58:30 -08001package net.floodlightcontroller.flowcache;
2
3import java.util.ArrayList;
4
5import net.floodlightcontroller.core.module.IFloodlightService;
6import net.floodlightcontroller.util.CallerId;
7import net.floodlightcontroller.util.DataPathEndpoints;
8import net.floodlightcontroller.util.FlowId;
9import net.floodlightcontroller.util.FlowPath;
10
11/**
12 * @short Interface for providing Flow Service to other modules.
13 */
14public interface IFlowService extends IFloodlightService {
15 /**
16 * Add a flow.
17 *
18 * Internally, ONOS will automatically register the installer for
19 * receiving Flow Path Notifications for that path.
20 *
21 * @param flowPath the Flow Path to install.
22 * @param flowId the return-by-reference Flow ID as assigned internally.
23 * @return true on success, otherwise false.
24 */
25 boolean addFlow(FlowPath flowPath, FlowId flowId);
26
27 /**
28 * Delete a previously added flow.
29 *
30 * @param flowId the Flow ID of the flow to delete.
31 * @return true on success, otherwise false.
32 */
33 boolean deleteFlow(FlowId flowId);
34
35 /**
36 * Get a previously added flow.
37 *
38 * @param flowId the Flow ID of the flow to get.
Pavlin Radoslavovb6f53542013-03-01 16:02:14 -080039 * @return the Flow Path if found, otherwise null.
Pavlin Radoslavov9e5344c2013-02-18 09:58:30 -080040 */
Pavlin Radoslavovb6f53542013-03-01 16:02:14 -080041 FlowPath getFlow(FlowId flowId);
Pavlin Radoslavov9e5344c2013-02-18 09:58:30 -080042
43 /**
Pavlin Radoslavov706df052013-03-06 10:49:07 -080044 * Get all previously added flows by a specific installer for a given
Pavlin Radoslavov9e5344c2013-02-18 09:58:30 -080045 * data path endpoints.
46 *
47 * @param installerId the Caller ID of the installer of the flow to get.
48 * @param dataPathEndpoints the data path endpoints of the flow to get.
Pavlin Radoslavov706df052013-03-06 10:49:07 -080049 * @return the Flow Paths if found, otherwise null.
Pavlin Radoslavov9e5344c2013-02-18 09:58:30 -080050 */
Pavlin Radoslavov706df052013-03-06 10:49:07 -080051 ArrayList<FlowPath> getAllFlows(CallerId installerId,
52 DataPathEndpoints dataPathEndpoints);
Pavlin Radoslavov9e5344c2013-02-18 09:58:30 -080053
54 /**
55 * Get all installed flows by all installers for given data path endpoints.
56 *
57 * @param dataPathEndpoints the data path endpoints of the flows to get.
Pavlin Radoslavovb6f53542013-03-01 16:02:14 -080058 * @return the Flow Paths if found, otherwise null.
Pavlin Radoslavov9e5344c2013-02-18 09:58:30 -080059 */
Pavlin Radoslavovb6f53542013-03-01 16:02:14 -080060 ArrayList<FlowPath> getAllFlows(DataPathEndpoints dataPathEndpoints);
Pavlin Radoslavov9e5344c2013-02-18 09:58:30 -080061
62 /**
63 * Get all installed flows by all installers.
64 *
Pavlin Radoslavovb6f53542013-03-01 16:02:14 -080065 * @return the Flow Paths if found, otherwise null.
Pavlin Radoslavov9e5344c2013-02-18 09:58:30 -080066 */
Pavlin Radoslavovb6f53542013-03-01 16:02:14 -080067 ArrayList<FlowPath> getAllFlows();
Pavlin Radoslavov9e5344c2013-02-18 09:58:30 -080068}