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;
13 import org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductor;
14 import org.opendaylight.openflowplugin.openflow.md.core.IMDMessageListener;
15 import org.opendaylight.yangtools.yang.binding.DataObject;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
23 public abstract class TicketProcessorFactory {
25 protected static final Logger LOG = LoggerFactory
26 .getLogger(TicketProcessorFactory.class);
30 * @param listenerMapping
31 * @return runnable ticket processor
33 public static <T> Runnable createProcessor(
34 final Ticket<T> ticket,
35 final Map<Class<? extends DataObject>, Collection<IMDMessageListener>> listenerMapping) {
36 return new Runnable() {
39 // TODO: delegate processing of message - notify listeners
40 LOG.debug("experimenter received, type: " + ticket.getRegisteredMessageType());
44 ticket.getResult().set(null);
48 * @param listenerMapping
50 private void notifyListener() {
51 DataObject message = ticket.getMessage();
52 Class<? extends DataObject> messageType = ticket.getRegisteredMessageType();
53 Collection<IMDMessageListener> listeners = listenerMapping.get(messageType);
54 ConnectionConductor conductor = ticket.getConductor();
56 if (listeners != null) {
57 for (IMDMessageListener listener : listeners) {
58 // Pass cookie only for PACKT_IN
59 if (messageType.equals("PacketInMessage.class")) {
60 listener.receive(conductor.getAuxiliaryKey(),
61 conductor.getSessionContext(), message);
63 listener.receive(null, conductor.getSessionContext(), message);
67 LOG.warn("No listeners for this message Type {}", messageType);