*/
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);
}