Bug-2094 : L3 North-South does not work
[netvirt.git] / openstack / net-virt / src / main / java / org / opendaylight / ovsdb / openstack / netvirt / impl / EventDispatcherImpl.java
index 8ef0d2c0155ecb021e4fd1c6377ea5a6e2b8b3b6..d9a1f8daaacfc6a0c9eb7301be7f0af53cc7acee 100644 (file)
@@ -12,9 +12,11 @@ package org.opendaylight.ovsdb.openstack.netvirt.impl;
 
 import org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent;
 import org.opendaylight.ovsdb.openstack.netvirt.AbstractHandler;
+import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
 import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
 import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
 
+import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -25,24 +27,26 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
 
-public class EventDispatcherImpl implements EventDispatcher {
-
+public class EventDispatcherImpl implements EventDispatcher, ConfigInterface {
     static final Logger logger = LoggerFactory.getLogger(EventDispatcher.class);
     private ExecutorService eventHandler;
     private volatile BlockingQueue<AbstractEvent> events;
-
     private AbstractHandler[] handlers;
 
-    void init() {
+    public EventDispatcherImpl() {
+        events = new LinkedBlockingQueue<>();
+        handlers = new AbstractHandler[AbstractEvent.HandlerType.size];
         eventHandler = Executors.newSingleThreadExecutor();
-        this.events = new LinkedBlockingQueue<>();
-        this.handlers = new AbstractHandler[AbstractEvent.HandlerType.size];
+        start();
     }
 
     void start() {
         eventHandler.submit(new Runnable()  {
             @Override
             public void run() {
+                Thread t = Thread.currentThread();
+                t.setName("EventDispatcherImpl");
+                logger.info("EventDispatcherImpl: started {}", t.getName());
                 while (true) {
                     AbstractEvent ev;
                     try {
@@ -85,7 +89,7 @@ public class EventDispatcherImpl implements EventDispatcher {
     private void dispatchEvent(AbstractEvent ev) {
         AbstractHandler handler = handlers[ev.getHandlerType().ordinal()];
         if (handler == null) {
-            logger.warn("event dispatcher found no handler for " + ev);
+            logger.warn("event dispatcher found no handler for {}", ev);
             return;
         }
 
@@ -96,12 +100,11 @@ public class EventDispatcherImpl implements EventDispatcher {
         Long pid = (Long) ref.getProperty(org.osgi.framework.Constants.SERVICE_ID);
         Object handlerTypeObject = ref.getProperty(Constants.EVENT_HANDLER_TYPE_PROPERTY);
         if (!(handlerTypeObject instanceof AbstractEvent.HandlerType)){
-            logger.error("Abstract handler reg failed to provide a valid handler type " + handlerTypeObject);
+            logger.error("Abstract handler reg failed to provide a valid handler type {}", handlerTypeObject);
             return;
         }
         AbstractEvent.HandlerType handlerType = (AbstractEvent.HandlerType) handlerTypeObject;
         handlers[handlerType.ordinal()] = handler;
-
         logger.debug("Event handler for type {} registered for {}, pid {}",
                      handlerType, handler.getClass().getName(), pid);
     }
@@ -115,7 +118,6 @@ public class EventDispatcherImpl implements EventDispatcher {
         }
         AbstractEvent.HandlerType handlerType = (AbstractEvent.HandlerType) handlerTypeObject;
         handlers[handlerType.ordinal()] = null;
-
         logger.debug("Event handler for type {} unregistered pid {}", handlerType, pid);
     }
 
@@ -127,6 +129,7 @@ public class EventDispatcherImpl implements EventDispatcher {
     @Override
     public void enqueueEvent(AbstractEvent event) {
         if (event == null) {
+            logger.warn("enqueueEvent: event is null");
             return;
         }
 
@@ -136,4 +139,10 @@ public class EventDispatcherImpl implements EventDispatcher {
             logger.error("Thread was interrupted while trying to enqueue event ", e);
         }
     }
+
+    @Override
+    public void setDependencies(BundleContext bundleContext, ServiceReference serviceReference) {}
+
+    @Override
+    public void setDependencies(Object impl) {}
 }