Пример #1
0
        void NewWrittingTransactionUnsafe(TaskCompletionSource <IKeyValueDBTransaction> tcs)
        {
            var newTransactionRoot = LastCommited.NewTransactionRoot();

            _writingTransaction = new InMemoryKeyValueDBTransaction(this, newTransactionRoot, true, false);
            tcs.TrySetResult(_writingTransaction);
        }
Пример #2
0
        public IKeyValueDBTransaction StartReadOnlyTransaction()
        {
            var tr = new InMemoryKeyValueDBTransaction(this, LastCommited, false, true);

            _transactions.Add(tr, null);
            return(tr);
        }
Пример #3
0
 internal void RevertWrittingTransaction()
 {
     lock (_writeLock)
     {
         _writingTransaction = null;
         TryDequeWaiterForWrittingTransaction();
     }
 }
Пример #4
0
        InMemoryKeyValueDBTransaction NewWritingTransactionUnsafe()
        {
            var newTransactionRoot = LastCommited.NewTransactionRoot();
            var tr = new InMemoryKeyValueDBTransaction(this, newTransactionRoot, true, false);

            _writingTransaction = tr;
            return(tr);
        }
Пример #5
0
 internal void CommitWrittingTransaction(IBTreeRootNode btreeRoot)
 {
     lock (_writeLock)
     {
         _writingTransaction = null;
         _lastCommited       = btreeRoot;
         TryDequeWaiterForWrittingTransaction();
     }
 }
Пример #6
0
 internal void CommitWrittingTransaction(IBTreeRootNode btreeRoot)
 {
     lock (_writeLock)
     {
         _writingTransaction = null;
         _lastCommited = btreeRoot;
         TryDequeWaiterForWrittingTransaction();
     }
 }
Пример #7
0
 internal IBTreeRootNode MakeWrittableTransaction(InMemoryKeyValueDBTransaction keyValueDBTransaction, IBTreeRootNode btreeRoot)
 {
     lock (_writeLock)
     {
         if (_writingTransaction != null) throw new BTDBTransactionRetryException("Another writting transaction already running");
         if (LastCommited != btreeRoot) throw new BTDBTransactionRetryException("Another writting transaction already finished");
         _writingTransaction = keyValueDBTransaction;
         return btreeRoot.NewTransactionRoot();
     }
 }
Пример #8
0
 internal IBTreeRootNode MakeWrittableTransaction(InMemoryKeyValueDBTransaction keyValueDBTransaction, IBTreeRootNode btreeRoot)
 {
     lock (_writeLock)
     {
         if (_writingTransaction != null)
         {
             throw new BTDBTransactionRetryException("Another writting transaction already running");
         }
         if (LastCommited != btreeRoot)
         {
             throw new BTDBTransactionRetryException("Another writting transaction already finished");
         }
         _writingTransaction = keyValueDBTransaction;
         return(btreeRoot.NewTransactionRoot());
     }
 }
Пример #9
0
 void NewWrittingTransactionUnsafe(TaskCompletionSource<IKeyValueDBTransaction> tcs)
 {
     var newTransactionRoot = LastCommited.NewTransactionRoot();
     _writingTransaction = new InMemoryKeyValueDBTransaction(this, newTransactionRoot, true, false);
     tcs.TrySetResult(_writingTransaction);
 }
Пример #10
0
 internal void RevertWrittingTransaction()
 {
     lock (_writeLock)
     {
         _writingTransaction = null;
         TryDequeWaiterForWrittingTransaction();
     }
 }