BUG-1075: ingress back pressure
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / queue / QueueKeeper.java
index c22a81a2203249651294556b449075acbc148b4c..35eaacf1560a45cbc8bf6827cd937ee36e69ab2e 100644 (file)
@@ -7,13 +7,7 @@
  */
 package org.opendaylight.openflowplugin.openflow.md.queue;
 
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
 import org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductor;
-import org.opendaylight.openflowplugin.openflow.md.core.IMDMessageTranslator;
-import org.opendaylight.openflowplugin.openflow.md.core.TranslatorKey;
 
 /**
  * This processing mechanism based on queue. Processing consists of 2 steps: translate and publish. 
@@ -28,7 +22,7 @@ import org.opendaylight.openflowplugin.openflow.md.core.TranslatorKey;
  * @param <IN> source type
  * @param <OUT> result type
  */
-public interface QueueKeeper<IN, OUT> {
+public interface QueueKeeper<IN> extends AutoCloseable {
     
     /** type of message enqueue */
     public enum QueueType {
@@ -37,18 +31,6 @@ public interface QueueKeeper<IN, OUT> {
         /** unordered processing - bypass fair processing */
         UNORDERED}
 
-    /**
-     * @param translatorMapping translators for message processing
-     */
-    void setTranslatorMapping(Map<TranslatorKey, Collection<IMDMessageTranslator<IN, List<OUT>>>> translatorMapping);
-
-    /**
-     * enqueue message for processing using {@link QueueType#DEFAULT}
-     * @param message
-     * @param conductor source of message
-     */
-    void push(IN message, ConnectionConductor conductor);
-    
     /**
      * enqueue message for processing
      * @param message
@@ -58,7 +40,7 @@ public interface QueueKeeper<IN, OUT> {
     void push(IN message, ConnectionConductor conductor, QueueType queueType);
 
     /**
-     * @param popListenersMapping listeners invoked when processing done
+     * @return oldest item from queue - if available and remove it from queue
      */
-    void setPopListenersMapping(Map<Class<? extends OUT>, Collection<PopListener<OUT>>> popListenersMapping);
+    QueueItem<IN> poll();
 }