internal void FireOutcome(TransactionStatus statusArg)
 {
     lock (this)
     {
         if (statusArg == TransactionStatus.Committed)
         {
             if (DiagnosticTrace.Verbose)
             {
                 TransactionCommittedTraceRecord.Trace(System.Transactions.SR.GetString("TraceSourceOletx"), this.TransactionTraceId);
             }
             this.status = TransactionStatus.Committed;
         }
         else if (statusArg == TransactionStatus.Aborted)
         {
             if (DiagnosticTrace.Warning)
             {
                 TransactionAbortedTraceRecord.Trace(System.Transactions.SR.GetString("TraceSourceOletx"), this.TransactionTraceId);
             }
             this.status = TransactionStatus.Aborted;
         }
         else
         {
             if (DiagnosticTrace.Warning)
             {
                 TransactionInDoubtTraceRecord.Trace(System.Transactions.SR.GetString("TraceSourceOletx"), this.TransactionTraceId);
             }
             this.status = TransactionStatus.InDoubt;
         }
     }
     if (this.InternalTransaction != null)
     {
         System.Transactions.InternalTransaction.DistributedTransactionOutcome(this.InternalTransaction, this.status);
     }
 }
 internal override void EnterState(InternalTransaction tx)
 {
     base.EnterState(tx);
     if (tx.phase1Volatiles.VolatileDemux != null)
     {
         tx.phase1Volatiles.VolatileDemux.BroadcastCommitted(ref tx.phase1Volatiles);
     }
     if (tx.phase0Volatiles.VolatileDemux != null)
     {
         tx.phase0Volatiles.VolatileDemux.BroadcastCommitted(ref tx.phase0Volatiles);
     }
     tx.FireCompletion();
     if (DiagnosticTrace.Verbose)
     {
         TransactionCommittedTraceRecord.Trace(System.Transactions.SR.GetString("TraceSourceLtm"), tx.TransactionTraceId);
     }
 }
 internal override void EnterState(InternalTransaction tx)
 {
     base.EnterState(tx);
     base.CommonEnterState(tx);
     for (int i = 0; i < tx.phase0Volatiles.volatileEnlistmentCount; i++)
     {
         tx.phase0Volatiles.volatileEnlistments[i].twoPhaseState.InternalCommitted(tx.phase0Volatiles.volatileEnlistments[i]);
     }
     for (int j = 0; j < tx.phase1Volatiles.volatileEnlistmentCount; j++)
     {
         tx.phase1Volatiles.volatileEnlistments[j].twoPhaseState.InternalCommitted(tx.phase1Volatiles.volatileEnlistments[j]);
     }
     TransactionManager.TransactionTable.Remove(tx);
     if (DiagnosticTrace.Verbose)
     {
         TransactionCommittedTraceRecord.Trace(System.Transactions.SR.GetString("TraceSourceLtm"), tx.TransactionTraceId);
     }
     tx.FireCompletion();
     if (tx.asyncCommit)
     {
         tx.SignalAsyncCompletion();
     }
 }