Esempio n. 1
0
        public void Abort()
        {
            Debug.Assert(_parent != null);
            WaitingAction.RemoveAll(WaitingActions);

            for (var i = 0; i < _taken.Count; i++)
            {
                _taken[i].Abort();
            }

            Cleanup();
        }
Esempio n. 2
0
        public void Commit()
        {
            Debug.Assert(_parent != null);
            WaitingAction.RemoveAll(WaitingActions);

            int count;
            var written = _written.GetArray(out count);

            _parent.AddRange(written, count);

            Cleanup();
        }
Esempio n. 3
0
 public void Dispose()
 {
     WaitingAction.RemoveAll(_globalWaitingActions);
     if (_transactionCount == 0)
     {
         return;
     }
     // Just rollback topmost transactions internally
     for (var i = 0; i < _transactionTablesCount; i++)
     {
         _transactionTables[i].Table.AbortToRoot();
     }
     Array.Clear(_transactionTables, 0, _transactionTablesCount);
     _transactionTablesCount = 0;
     _transactionCount       = 0;
 }
Esempio n. 4
0
        public void AbortToRoot()
        {
            Debug.Assert(_parent != null);
            WaitingAction.RemoveAll(WaitingActions);

            for (var i = 0; i < _taken.Count; i++)
            {
                _taken[i].AbortToRoot();
            }

            if (_parent.HierarchyLevel != 0)
            {
                _parent.AbortToRoot();
            }

            Cleanup();
        }