private void AddOperation(IOperation operation) { var transation = Transaction.Current; if ((transation != null) && (transation.TransactionInformation.Status == TransactionStatus.Active)) { Journal journal; lock (_lock) { var id = transation.TransactionInformation.LocalIdentifier; if (!_journals.ContainsKey(id)) { journal = _journals.AddAndReturn(new KeyValuePair <string, Journal>(id, new Journal(this))) .Value; transation.EnlistVolatile(journal, EnlistmentOptions.None); } else { journal = _journals[id]; } } journal.Add(operation); return; } operation.Commit(); }
private static void EnlistOperation( IOperation operation ) { if( enlistment == null && Transaction.Current != null ) { enlistment = new TxfmEnlistment(); Transaction.Current.EnlistDurable( resourceManagerId, enlistment, EnlistmentOptions.None ); } operation.Execute(); if( enlistment == null ) { // Not in a transaction. operation.Commit(); } else { enlistment.AddOperation( operation ); } }
public void Add(IOperation operation) { operation.Commit(); _operations.Add(operation); }