BUG-1075: ingress back pressure
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / queue / TicketFinisher.java
index 405dd05116173aea5ccfbb24245ddcccf0408636..0018b2da99e5086e30217836b758cdc5ae124f5d 100644 (file)
@@ -7,46 +7,22 @@
  */
 package org.opendaylight.openflowplugin.openflow.md.queue;
 
-import java.util.Set;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ExecutionException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.List;
 
 /**
- * @author mirehak
- * @param <T> result type
+ * @param <OUT> result type
  *
  */
-public class TicketFinisher<T> implements Runnable {
-    
-    private static final Logger LOG = LoggerFactory
-            .getLogger(TicketFinisher.class);
-    
-    private final BlockingQueue<Ticket<T>> queue;
-    private final Set<PopListener<T>> listeners;
+public interface TicketFinisher<OUT> extends Runnable {
+
+    /**
+     * initiate shutdown of this worker
+     */
+    void finish();
     
     /**
-     * @param queue
-     * @param listeners
+     * notify popListeners
+     * @param processedMessages
      */
-    public TicketFinisher(BlockingQueue<Ticket<T>> queue,
-            Set<PopListener<T>> listeners) {
-        this.queue = queue;
-        this.listeners = listeners;
-    }
-
-
-    @Override
-    public void run() {
-        try {
-            Ticket<T> result = queue.take();
-            for (PopListener<T> consumer : listeners) {
-                consumer.onPop(result.getResult().get());
-            }
-        } catch (ExecutionException | InterruptedException e) {
-            LOG.error(e.getMessage(), e);
-        }
-    }
+    void firePopNotification(List<OUT> processedMessages);
 }