Bug 1764 - moved Session related interfaces to openflowplugin-api
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / queue / QueueKeeperFactory.java
index e023fd47ceafa875894843d3d7349d7fcfddf83a..879f86dc249ab931f6a559c897d9033e260d2f20 100644 (file)
@@ -7,19 +7,20 @@
  */
 package org.opendaylight.openflowplugin.openflow.md.queue;
 
+import org.opendaylight.openflowplugin.api.openflow.md.queue.MessageSourcePollRegistrator;
+import org.opendaylight.openflowplugin.api.openflow.md.queue.QueueKeeper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
 
 /**
- * factory for {@link QueueKeeper} implementations
+ * factory for {@link org.opendaylight.openflowplugin.api.openflow.md.queue.QueueKeeper} implementations
  */
 public abstract class QueueKeeperFactory {
     
     /**
      * @param sourceRegistrator 
      * @param capacity blocking queue capacity
-     * @return fair reading implementation of {@link QueueKeeper}
+     * @return fair reading implementation of {@link org.opendaylight.openflowplugin.api.openflow.md.queue.QueueKeeper} (not registered = not started yet)
      */
-    @SuppressWarnings("resource")
     public static QueueKeeper<OfHeader> createFairQueueKeeper(
             MessageSourcePollRegistrator<QueueKeeper<OfHeader>> sourceRegistrator, int capacity) {
         QueueKeeperFairImpl queueKeeper = new QueueKeeperFairImpl();
@@ -27,8 +28,18 @@ public abstract class QueueKeeperFactory {
         queueKeeper.setHarvesterHandle(sourceRegistrator.getHarvesterHandle());
         queueKeeper.init();
         
+        return queueKeeper;
+    }
+
+    /**
+     * register queue by harvester, start processing it. Use {@link QueueKeeperFairImpl#close()} to kill the queue and stop processing. 
+     * @param sourceRegistrator
+     * @param queueKeeper
+     */
+    public static <V> void plugQueue(
+            MessageSourcePollRegistrator<QueueKeeper<V>> sourceRegistrator,
+            QueueKeeper<V> queueKeeper) {
         AutoCloseable registration = sourceRegistrator.registerMessageSource(queueKeeper);
         queueKeeper.setPollRegistration(registration);
-        return queueKeeper;
     }
 }