2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.sal.flowprogrammer;
11 import org.opendaylight.controller.sal.core.Node;
12 import org.opendaylight.controller.sal.utils.Status;
15 * This interface defines the flow programmer methods to be implemented by
19 public interface IPluginInFlowProgrammerService {
21 * Synchronously add a flow to the network node
25 * {@link org.opendaylight.controller.sal.core.Node} on which the
29 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
31 * @return Status the operation status
32 * {@link org.opendaylight.controller.sal.utils.Status}
34 Status addFlow(Node node, Flow flow);
37 * Synchronously modify existing flow on the switch
41 * {@link org.opendaylight.controller.sal.core.Node} on which the
45 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
47 * @return Status the operation status
48 * {@link org.opendaylight.controller.sal.utils.Status}
50 Status modifyFlow(Node node, Flow oldFlow, Flow newFlow);
53 * Synchronously remove the flow from the network node
57 * {@link org.opendaylight.controller.sal.core.Node} on which the
61 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
63 * @return Status the operation status
64 * {@link org.opendaylight.controller.sal.utils.Status}
66 Status removeFlow(Node node, Flow flow);
69 * Asynchronously add a flow to the network node
73 * {@link org.opendaylight.controller.sal.core.Node} on which the
77 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
81 * @return Status the operation status
82 * {@link org.opendaylight.controller.sal.utils.Status}
84 Status addFlowAsync(Node node, Flow flow, long rid);
87 * Asynchronously modify existing flow on the switch
91 * {@link org.opendaylight.controller.sal.core.Node} on which the
95 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
98 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
101 * @return Status the operation status
102 * {@link org.opendaylight.controller.sal.utils.Status}
104 Status modifyFlowAsync(Node node, Flow oldFlow, Flow newFlow, long rid);
107 * Asynchronously remove the flow from the network node
111 * {@link org.opendaylight.controller.sal.core.Node} on which the
115 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
119 * @return Status the operation status
120 * {@link org.opendaylight.controller.sal.utils.Status}
122 Status removeFlowAsync(Node node, Flow flow, long rid);
125 * Remove all flows present on the network node
129 * {@link org.opendaylight.controller.sal.core.Node} on which the
131 * @return Status the operation status
132 * {@link org.opendaylight.controller.sal.utils.Status}
134 Status removeAllFlows(Node node);
137 * Send Barrier message synchronously. The caller will be blocked until the
138 * Barrier reply arrives.
142 * {@link org.opendaylight.controller.sal.core.Node}
143 * @return Status the operation status
144 * {@link org.opendaylight.controller.sal.utils.Status}
146 Status syncSendBarrierMessage(Node node);
149 * Send Barrier message asynchronously. The caller is not blocked.
153 * {@link org.opendaylight.controller.sal.core.Node}
154 * @return Status the operation status
155 * {@link org.opendaylight.controller.sal.utils.Status}
157 Status asyncSendBarrierMessage(Node node);