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
18 public interface IPluginInFlowProgrammerService {
20 * Synchronously add a flow to the network node
24 * {@link org.opendaylight.controller.sal.core.Node} on which the
28 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
30 * @return Status the operation status
31 * {@link org.opendaylight.controller.sal.utils.Status}
33 Status addFlow(Node node, Flow flow);
36 * Synchronously modify existing flow on the switch
40 * {@link org.opendaylight.controller.sal.core.Node} on which the
44 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
46 * @return Status the operation status
47 * {@link org.opendaylight.controller.sal.utils.Status}
49 Status modifyFlow(Node node, Flow oldFlow, Flow newFlow);
52 * Synchronously remove the flow from the network node
56 * {@link org.opendaylight.controller.sal.core.Node} on which the
60 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
62 * @return Status the operation status
63 * {@link org.opendaylight.controller.sal.utils.Status}
65 Status removeFlow(Node node, Flow flow);
68 * Asynchronously add a flow to the network node
72 * {@link org.opendaylight.controller.sal.core.Node} on which the
76 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
80 * @return Status the operation status
81 * {@link org.opendaylight.controller.sal.utils.Status}
83 Status addFlowAsync(Node node, Flow flow, long rid);
86 * Asynchronously modify existing flow on the switch
90 * {@link org.opendaylight.controller.sal.core.Node} on which the
94 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
97 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
100 * @return Status the operation status
101 * {@link org.opendaylight.controller.sal.utils.Status}
103 Status modifyFlowAsync(Node node, Flow oldFlow, Flow newFlow, long rid);
106 * Asynchronously remove the flow from the network node
110 * {@link org.opendaylight.controller.sal.core.Node} on which the
114 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
118 * @return Status the operation status
119 * {@link org.opendaylight.controller.sal.utils.Status}
121 Status removeFlowAsync(Node node, Flow flow, long rid);
124 * Remove all flows present on the network node
128 * {@link org.opendaylight.controller.sal.core.Node} on which the
130 * @return Status the operation status
131 * {@link org.opendaylight.controller.sal.utils.Status}
133 Status removeAllFlows(Node node);
136 * Send Barrier message synchronously. The caller will be blocked until the
137 * Barrier reply arrives.
141 * {@link org.opendaylight.controller.sal.core.Node}
142 * @return Status the operation status
143 * {@link org.opendaylight.controller.sal.utils.Status}
145 Status syncSendBarrierMessage(Node node);
148 * Send Barrier message asynchronously. The caller is not blocked.
152 * {@link org.opendaylight.controller.sal.core.Node}
153 * @return Status the operation status
154 * {@link org.opendaylight.controller.sal.utils.Status}
156 Status asyncSendBarrierMessage(Node node);