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();
+	}
 }