2 * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. 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.netvirt.natservice.internal;
10 import java.util.concurrent.ExecutorService;
11 import javax.annotation.PreDestroy;
12 import javax.inject.Inject;
13 import javax.inject.Singleton;
14 import org.opendaylight.yangtools.util.concurrent.SpecialExecutors;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
19 public class EventDispatcher implements AutoCloseable {
20 private static final Logger LOG = LoggerFactory.getLogger(EventDispatcher.class);
22 private final NaptEventHandler naptEventHandler;
23 private final ExecutorService executor = SpecialExecutors.newBoundedSingleThreadExecutor(
24 NatConstants.EVENT_QUEUE_LENGTH, "NatServiceEventDispatcher", EventDispatcher.class);
27 public EventDispatcher(final NaptEventHandler naptEventHandler) {
28 this.naptEventHandler = naptEventHandler;
37 public void addFlowRemovedNaptEvent(NAPTEntryEvent naptEntryEvent) {
38 LOG.trace("addFlowRemovedNaptEvent : Adding Flow Removed event {}", naptEntryEvent);
40 executor.execute(() -> naptEventHandler.handleEvent(naptEntryEvent));