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;
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 {
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;
}
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);
}
}
AbstractEvent.HandlerType handlerType = (AbstractEvent.HandlerType) handlerTypeObject;
handlers[handlerType.ordinal()] = null;
-
logger.debug("Event handler for type {} unregistered pid {}", handlerType, pid);
}
@Override
public void enqueueEvent(AbstractEvent event) {
if (event == null) {
+ logger.warn("enqueueEvent: event is null");
return;
}
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) {}
}