DependentTransaction.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

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

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

namespace System.Transactions 
{ 
    using System;
    using System.Runtime.Serialization; 
    using System.Transactions.Diagnostics;

    /// 
    // When we serialize a DependentTransaction, we specify the type OletxTransaction, so a DependentTransaction never 
    // actually gets deserialized.
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2229:ImplementSerializationConstructors")] 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2240:ImplementISerializableCorrectly")] 
    [Serializable]
    public sealed class DependentTransaction : Transaction 
    {
        bool blocking;

        // Create a transaction with the given settings 
        //
        internal DependentTransaction( 
            IsolationLevel isoLevel, 
            InternalTransaction internalTransaction,
            bool blocking 
            ) : base( isoLevel, internalTransaction )
        {
            this.blocking = blocking;
            lock( this.internalTransaction ) 
            {
                if( blocking ) 
                { 
                    this.internalTransaction.State.CreateBlockingClone( this.internalTransaction );
                } 
                else
                {
                    this.internalTransaction.State.CreateAbortingClone( this.internalTransaction );
                } 
            }
        } 
 
        public void Complete()
        { 
            if ( DiagnosticTrace.Verbose )
            {
                MethodEnteredTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ),
                    "DependentTransaction.Complete" 
                    );
            } 
            lock( this.internalTransaction ) 
            {
                if( Disposed ) 
                {
                    throw new ObjectDisposedException( "Transaction" );
                }
 
                if( this.complete )
                { 
                    throw TransactionException.CreateTransactionCompletedException( SR.GetString( SR.TraceSourceLtm ) ); 
                }
 
                this.complete = true;

                if( blocking )
                { 
                    this.internalTransaction.State.CompleteBlockingClone( this.internalTransaction );
                } 
                else 
                {
                    this.internalTransaction.State.CompleteAbortingClone( this.internalTransaction ); 
                }
            }

            if ( DiagnosticTrace.Information ) 
            {
                DependentCloneCompleteTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ), 
                    this.TransactionTraceId 
                    );
            } 
            if ( DiagnosticTrace.Verbose )
            {
                MethodExitedTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ),
                    "DependentTransaction.Complete" 
                    );
            } 
        } 
    }
} 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Transactions 
{ 
    using System;
    using System.Runtime.Serialization; 
    using System.Transactions.Diagnostics;

    /// 
    // When we serialize a DependentTransaction, we specify the type OletxTransaction, so a DependentTransaction never 
    // actually gets deserialized.
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2229:ImplementSerializationConstructors")] 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2240:ImplementISerializableCorrectly")] 
    [Serializable]
    public sealed class DependentTransaction : Transaction 
    {
        bool blocking;

        // Create a transaction with the given settings 
        //
        internal DependentTransaction( 
            IsolationLevel isoLevel, 
            InternalTransaction internalTransaction,
            bool blocking 
            ) : base( isoLevel, internalTransaction )
        {
            this.blocking = blocking;
            lock( this.internalTransaction ) 
            {
                if( blocking ) 
                { 
                    this.internalTransaction.State.CreateBlockingClone( this.internalTransaction );
                } 
                else
                {
                    this.internalTransaction.State.CreateAbortingClone( this.internalTransaction );
                } 
            }
        } 
 
        public void Complete()
        { 
            if ( DiagnosticTrace.Verbose )
            {
                MethodEnteredTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ),
                    "DependentTransaction.Complete" 
                    );
            } 
            lock( this.internalTransaction ) 
            {
                if( Disposed ) 
                {
                    throw new ObjectDisposedException( "Transaction" );
                }
 
                if( this.complete )
                { 
                    throw TransactionException.CreateTransactionCompletedException( SR.GetString( SR.TraceSourceLtm ) ); 
                }
 
                this.complete = true;

                if( blocking )
                { 
                    this.internalTransaction.State.CompleteBlockingClone( this.internalTransaction );
                } 
                else 
                {
                    this.internalTransaction.State.CompleteAbortingClone( this.internalTransaction ); 
                }
            }

            if ( DiagnosticTrace.Information ) 
            {
                DependentCloneCompleteTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ), 
                    this.TransactionTraceId 
                    );
            } 
            if ( DiagnosticTrace.Verbose )
            {
                MethodExitedTraceRecord.Trace( SR.GetString( SR.TraceSourceLtm ),
                    "DependentTransaction.Complete" 
                    );
            } 
        } 
    }
} 


// 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