1 package org.opendaylight.ovsdb.openstack.netvirt.providers;
3 import com.google.common.collect.Lists;
4 import com.google.common.collect.Maps;
5 import com.google.common.collect.Queues;
9 import java.util.Queue;
10 import java.util.UUID;
13 * Created by dave on 27/08/14.
15 public class PipelineOrchestratorImpl implements PipelineOrchestrator {
17 private Map<UUID, ServiceProperties> serviceRegistry = Maps.newHashMap();
18 private Queue<Integer> registerQueue = Queues.newArrayBlockingQueue(16);
19 private List<Integer> tableIdList = Lists.newArrayList(255);
21 public UUID registerService(Integer altitude, ServiceDirection direction) {
22 return UUID.randomUUID();
26 public void unregisterService(UUID serviceID) {
27 ServiceProperties sp = serviceRegistry.get(serviceID);
28 List<Integer> registers = sp.getRegisters();
29 if (registers != null) {
30 for (Integer register : registers) {
31 registerQueue.add(register);
34 // Add Table ID allocation back
39 public Integer getTableId(UUID serviceID) {
40 ServiceProperties sp = serviceRegistry.get(serviceID);
45 public Integer assignRegister(UUID serviceID) {
46 Integer register = registerQueue.poll();
47 if (register == null) {
48 throw new RuntimeException("No registers remaining");
53 private Integer assignTableId(Integer altitude) {
57 private class ServiceProperties {
59 ServiceDirection direction;
61 List<Integer> registers;
63 public ServiceProperties(Integer altitude,
64 ServiceDirection direction,
66 List<Integer> registers) {
67 this.altitude = altitude;
68 this.direction = direction;
69 this.tableId = tableId;
70 this.registers = registers;
73 public Integer getAltitude() {
77 public void setAltitude(Integer altitude) {
78 this.altitude = altitude;
81 public ServiceDirection getDirection() {
85 public void setDirection(ServiceDirection direction) {
86 this.direction = direction;
89 public Integer getTableId() {
93 public void setTableId(Integer tableId) {
94 this.tableId = tableId;
97 public List<Integer> getRegisters() {
101 public void setRegisters(List<Integer> registers) {
102 this.registers = registers;
105 public void addRegister(Integer register) {
106 this.registers.add(register);