- Application is no longer blocked when programming hundreds of flows. The Barrier...
[controller.git] / opendaylight / sal / api / src / main / java / org / opendaylight / controller / sal / flowprogrammer / IPluginInFlowProgrammerService.java
index 1fb99e0ab99bc4317184d1b077b0be8d0b69bb1b..3c40b96cc74d240b116e3746a17820119e8b77b0 100644 (file)
@@ -1,4 +1,3 @@
-
 /*
  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
  *
@@ -13,40 +12,81 @@ import org.opendaylight.controller.sal.core.Node;
 import org.opendaylight.controller.sal.utils.Status;
 
 /**
- * @file   IPluginOutFlowProgrammer.java
- *
- * @brief  Flow programmer interface to be implemented by protocol plugins
- *
- *
- *
+ * @file IPluginOutFlowProgrammer.java
+ * 
+ * @brief Flow programmer interface to be implemented by protocol plugins
  */
 public interface IPluginInFlowProgrammerService {
     /**
-     * Add a flow to the network node
-     *
+     * Synchronously add a flow to the network node
+     * 
+     * @param node
+     * @param flow
+     */
+    Status addFlow(Node node, Flow flow);
+
+    /**
+     * Synchronously modify existing flow on the switch
+     * 
+     * @param node
+     * @param flow
+     */
+    Status modifyFlow(Node node, Flow oldFlow, Flow newFlow);
+
+    /**
+     * Synchronously remove the flow from the network node
+     * 
      * @param node
      * @param flow
      */
-       Status addFlow(Node node, Flow flow);
+    Status removeFlow(Node node, Flow flow);
 
     /**
-     * Modify existing flow on the switch
-     *
+     * Asynchronously add a flow to the network node
+     * 
      * @param node
      * @param flow
+     * @param rid
      */
-       Status modifyFlow(Node node, Flow oldFlow, Flow newFlow);
+    Status addFlowAsync(Node node, Flow flow, long rid);
 
     /**
-     * Remove the flow from the network node
+     * Asynchronously modify existing flow on the switch
+     * 
      * @param node
      * @param flow
+     * @param rid
      */
-       Status removeFlow(Node node, Flow flow);
+    Status modifyFlowAsync(Node node, Flow oldFlow, Flow newFlow, long rid);
+
+    /**
+     * Asynchronously remove the flow from the network node
+     * 
+     * @param node
+     * @param flow
+     * @param rid
+     */
+    Status removeFlowAsync(Node node, Flow flow, long rid);
 
     /**
      * Remove all flows present on the network node
+     * 
+     * @param node
+     */
+    Status removeAllFlows(Node node);
+
+    /**
+     * Send Barrier message synchronously. The caller will be blocked until the
+     * Barrier reply arrives.
+     * 
+     * @param node
+     */
+    Status syncSendBarrierMessage(Node node);
+
+    /**
+     * Send Barrier message asynchronously. The caller is not blocked.
+     * 
      * @param node
      */
-       Status removeAllFlows(Node node);
+    Status asyncSendBarrierMessage(Node node);
 }