2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowplugin.openflow.md.queue;
10 import java.util.Collection;
11 import java.util.List;
13 import java.util.concurrent.BlockingQueue;
15 import org.opendaylight.yangtools.yang.binding.DataObject;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
22 public class TicketFinisherImpl implements TicketFinisher<DataObject> {
24 private static final Logger LOG = LoggerFactory
25 .getLogger(TicketFinisherImpl.class);
27 private final Map<Class<? extends DataObject>, Collection<PopListener<DataObject>>> popListenersMapping;
29 private boolean finished;
31 private BlockingQueue<TicketResult<DataObject>> queue;
35 * @param popListenersMapping
37 public TicketFinisherImpl(BlockingQueue<TicketResult<DataObject>> queue,
38 Map<Class<? extends DataObject>, Collection<PopListener<DataObject>>> popListenersMapping) {
40 this.popListenersMapping = popListenersMapping;
47 //TODO:: handle shutdown of queue
48 TicketResult<DataObject> result = queue.take();
49 List<DataObject> processedMessages = result.getResult().get();
50 firePopNotification(processedMessages);
51 } catch (Exception e) {
52 LOG.warn("processing (translate, publish) of ticket failed", e);
58 public void firePopNotification(List<DataObject> processedMessages) {
59 for (DataObject msg : processedMessages) {
60 Class<? extends Object> registeredType =
61 msg.getImplementedInterface();
62 Collection<PopListener<DataObject>> popListeners = popListenersMapping.get(registeredType);
63 if (popListeners == null) {
64 LOG.warn("no popListener registered for type {}", registeredType);
66 for (PopListener<DataObject> consumer : popListeners) {
74 * initiate shutdown of this worker
77 public void finish() {