Implemented the read side of the topology lock
Change-Id: I5ee9a8973f5700c357127b92a581f1f24af87dc1
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
index 628ad7c..d690821 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
@@ -9,6 +9,9 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
import net.floodlightcontroller.util.MACAddress;
@@ -24,6 +27,11 @@
private ConcurrentMap<InetAddress, Set<Device>> addr2Device;
private ConcurrentMap<MACAddress, Device> mac2Device;
+
+ private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
+ private Lock readLock = readWriteLock.readLock();
+ // TODO use the write lock after refactor
+ private Lock writeLock = readWriteLock.writeLock();
public NetworkGraphImpl() {
// TODO: Does these object need to be stored in Concurrent Collection?
@@ -148,4 +156,14 @@
}
}
}
+
+ @Override
+ public void acquireLock() {
+ readLock.lock();
+ }
+
+ @Override
+ public void releaseLock() {
+ readLock.unlock();
+ }
}