public void Abort() { Debug.Assert(_parent != null); WaitingAction.RemoveAll(WaitingActions); for (var i = 0; i < _taken.Count; i++) { _taken[i].Abort(); } Cleanup(); }
public void Commit() { Debug.Assert(_parent != null); WaitingAction.RemoveAll(WaitingActions); int count; var written = _written.GetArray(out count); _parent.AddRange(written, count); Cleanup(); }
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; }
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(); }