PreparingEnlistment.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / tx / System / Transactions / PreparingEnlistment.cs / 1305376 / PreparingEnlistment.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

#define DEMAND_TX_PERM 
 
namespace System.Transactions
{ 
    using System;
    using System.Diagnostics;
    using System.Threading;
    using System.Transactions; 
    using System.Transactions.Diagnostics;
 
    public class PreparingEnlistment : Enlistment 
    {
        internal PreparingEnlistment( 
            InternalEnlistment enlistment
            ) : base(enlistment)
        {
        } 

 
        public void Prepared() 
        {
            if ( DiagnosticTrace.Verbose ) 
            {
                MethodEnteredTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ),
                    "PreparingEnlistment.Prepared"
                    ); 
                EnlistmentCallbackPositiveTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ),
                    this.internalEnlistment.EnlistmentTraceId, 
                    EnlistmentCallback.Prepared 
                    );
            } 

            lock( this.internalEnlistment.SyncRoot )
            {
                this.internalEnlistment.State.Prepared( this.internalEnlistment ); 
            }
 
            if ( DiagnosticTrace.Verbose ) 
            {
                MethodExitedTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ), 
                    "PreparingEnlistment.Prepared"
                    );
            }
        } 

 
        public void ForceRollback() 
        {
            if ( DiagnosticTrace.Verbose ) 
            {
                MethodEnteredTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ),
                    "PreparingEnlistment.ForceRollback"
                    ); 
            }
 
            if ( DiagnosticTrace.Warning ) 
            {
                EnlistmentCallbackNegativeTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ), 
                    this.internalEnlistment.EnlistmentTraceId,
                    EnlistmentCallback.ForceRollback
                    );
            } 

            lock( this.internalEnlistment.SyncRoot ) 
            { 
                this.internalEnlistment.State.ForceRollback( this.internalEnlistment, null );
            } 

            if ( DiagnosticTrace.Verbose )
            {
                MethodExitedTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ), 
                    "PreparingEnlistment.ForceRollback"
                    ); 
            } 
        }
 

        // Changing the e paramater name would be a breaking change for little benefit.
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
        public void ForceRollback( Exception e ) 
        {
            if ( DiagnosticTrace.Verbose ) 
            { 
                MethodEnteredTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ),
                    "PreparingEnlistment.ForceRollback" 
                    );
            }

            if ( DiagnosticTrace.Warning ) 
            {
                EnlistmentCallbackNegativeTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ), 
                    this.internalEnlistment.EnlistmentTraceId, 
                    EnlistmentCallback.ForceRollback
                    ); 
            }

            lock( this.internalEnlistment.SyncRoot )
            { 
                this.internalEnlistment.State.ForceRollback( this.internalEnlistment, e );
            } 
 
            if ( DiagnosticTrace.Verbose )
            { 
                MethodExitedTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ),
                    "PreparingEnlistment.ForceRollback"
                    );
            } 
        }
 
 
        public byte[] RecoveryInformation()
        { 
            if ( DiagnosticTrace.Verbose )
            {
                MethodEnteredTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ),
                    "PreparingEnlistment.RecoveryInformation" 
                    );
            } 
 
            try
            { 
                lock( this.internalEnlistment.SyncRoot )
                {
                    return this.internalEnlistment.State.RecoveryInformation( this.internalEnlistment );
                } 
            }
            finally 
            { 
                if ( DiagnosticTrace.Verbose )
                { 
                    MethodExitedTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ),
                        "PreparingEnlistment.RecoveryInformation"
                        );
                } 
            }
        } 
    } 
}
 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK