add persistance of intents to ramcloud
Change-Id: I9a8b5886cf57da0621dc92e341d46c53d252528a
diff --git a/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java b/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
old mode 100644
new mode 100755
index 3e4d5bf..8706e85
--- a/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
+++ b/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
@@ -41,6 +41,8 @@
import com.netflix.curator.x.discovery.ServiceDiscovery;
import com.netflix.curator.x.discovery.ServiceDiscoveryBuilder;
import com.netflix.curator.x.discovery.ServiceInstance;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
/**
* A registry service that uses Zookeeper. All data is stored in Zookeeper,
@@ -78,6 +80,7 @@
//Zookeeper performance-related configuration
protected static final int sessionTimeout = 5000;
protected static final int connectionTimeout = 7000;
+ private volatile IdBlock idBlock = null;
protected class SwitchLeaderListener implements LeaderLatchListener{
@@ -385,27 +388,31 @@
return data;
}
+ public IdBlock allocateUniqueIdBlock(long range) {
+ try {
+ AtomicValue<Long> result = null;
+ do {
+ result = distributedIdCounter.add(range);
+ } while (result == null || !result.succeeded());
+
+ return new IdBlock(result.preValue(), result.postValue() - 1, range);
+ } catch (Exception e) {
+ log.error("Error allocating ID block");
+ }
+ return null;
+ }
+
/**
* Returns a block of IDs which are unique and unused.
* Range of IDs is fixed size and is assigned incrementally as this method called.
* Since the range of IDs is managed by Zookeeper in distributed way, this method may block when
* requests come up simultaneously.
*/
+ @Override
public IdBlock allocateUniqueIdBlock(){
- try {
- AtomicValue<Long> result = null;
- do {
- result = distributedIdCounter.add(ID_BLOCK_SIZE);
- } while (result == null || !result.succeeded());
-
- return new IdBlock(result.preValue(), result.postValue() - 1, ID_BLOCK_SIZE);
- } catch (Exception e) {
- log.error("Error allocating ID block");
- }
-
- return null;
+ return allocateUniqueIdBlock(ID_BLOCK_SIZE);
}
-
+
/*
* IFloodlightModule
*/