Ejemplo n.º 1
0
 internal IRootNode MakeWritableTransaction(ArtInMemoryKeyValueDBTransaction keyValueDBTransaction,
                                            IRootNode artRoot)
 {
     lock (_writeLock)
     {
         if (_writingTransaction != null)
         {
             throw new BTDBTransactionRetryException("Another writing transaction already running");
         }
         if (_lastCommited != artRoot)
         {
             throw new BTDBTransactionRetryException("Another writing transaction already finished");
         }
         _writingTransaction = keyValueDBTransaction;
         var result = _lastCommited.CreateWritableTransaction();
         DereferenceRoot(artRoot);
         return(result);
     }
 }