OPNFLWPLUG-1075: Making Device Oper transactions atomic
[openflowplugin.git] / openflowplugin-common / src / main / java / org / opendaylight / openflowplugin / common / txchain / TransactionChainManager.java
index 655d935584fad19be382a309db189b730896d9fa..949290252cbe0a1fd7f6b266acc2ea999a7ba7f9 100755 (executable)
@@ -17,6 +17,8 @@ import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
 import org.checkerframework.checker.lock.qual.GuardedBy;
 import org.checkerframework.checker.lock.qual.Holding;
 import org.eclipse.jdt.annotation.NonNull;
@@ -64,6 +66,7 @@ public class TransactionChainManager implements TransactionChainListener, AutoCl
 
     @GuardedBy("txLock")
     private TransactionChainManagerStatus transactionChainManagerStatus = TransactionChainManagerStatus.SLEEPING;
+    private ReadWriteLock readWriteTransactionLock = new ReentrantReadWriteLock();
 
     public TransactionChainManager(@NonNull final DataBroker dataBroker,
                                    @NonNull final String deviceIdentifier) {
@@ -369,4 +372,13 @@ public class TransactionChainManager implements TransactionChainListener, AutoCl
          */
         SHUTTING_DOWN
     }
+
+    public void acquireWriteTransactionLock() {
+        readWriteTransactionLock.writeLock().lock();
+    }
+
+    public void releaseWriteTransactionLock() {
+        readWriteTransactionLock.writeLock().unlock();
+    }
+
 }