2 * Copyright (C) 2014 Red Hat, Inc.
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 * Authors : Dave Tucker, Madhu Venugopal
11 package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13;
13 import java.util.List;
16 import org.osgi.framework.ServiceReference;
18 import com.google.common.collect.Lists;
19 import com.google.common.collect.Maps;
21 public class PipelineOrchestratorImpl implements PipelineOrchestrator {
23 private List<Service> staticPipeline = Lists.newArrayList(
25 Service.ARP_RESPONDER,
28 Service.LOAD_BALANCER,
31 Service.L2_FORWARDING,
35 Map<Service, AbstractServiceInstance> serviceRegistry = Maps.newConcurrentMap();
37 public PipelineOrchestratorImpl() {
40 public void registerService(final ServiceReference ref, AbstractServiceInstance serviceInstance){
41 Service service = (Service)ref.getProperty(AbstractServiceInstance.SERVICE_PROPERTY);
42 serviceRegistry.put(service, serviceInstance);
45 public void unregisterService(final ServiceReference ref) {
46 serviceRegistry.remove(ref.getProperty(AbstractServiceInstance.SERVICE_PROPERTY));
49 public Service getNextServiceInPipeline(Service service) {
50 int index = staticPipeline.indexOf(service);
51 if (index >= staticPipeline.size() - 1) return null;
52 return staticPipeline.get(index + 1);
56 public AbstractServiceInstance getServiceInstance(Service service) {
57 if (service == null) return null;
58 return serviceRegistry.get(service);