EnlistmentTraceIdentifier.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 / EnlistmentTraceIdentifier.cs / 1305376 / EnlistmentTraceIdentifier.cs

                            using System; 

namespace System.Transactions
{
    ///  
    /// This identifier is used in tracing to distiguish transaction
    /// enlistments.  This identifier is only unique within 
    /// a given AppDomain. 
    /// 
    internal struct EnlistmentTraceIdentifier 
    {
        public static readonly EnlistmentTraceIdentifier Empty = new EnlistmentTraceIdentifier();

        public EnlistmentTraceIdentifier( 
            Guid resourceManagerIdentifier,
            TransactionTraceIdentifier transactionTraceId, 
            int enlistmentIdentifier 
            )
        { 
            this.resourceManagerIdentifier = resourceManagerIdentifier;
            this.transactionTraceIdentifier = transactionTraceId;
            this.enlistmentIdentifier = enlistmentIdentifier;
        } 

        private Guid resourceManagerIdentifier; 
        ///  
        /// The Guid identifier of the resource manager that made the
        /// enlistment.  If the enlistment is a Volatile enlistment, 
        /// this value will be Guid.Empty.
        /// 
        public Guid ResourceManagerIdentifier
        { 
            get
            { 
                return this.resourceManagerIdentifier; 
            }
        } 

        private TransactionTraceIdentifier transactionTraceIdentifier;
        /// 
        /// The TransactionTraceIdentifier for the transaction that is 
        /// enlisted upon.
        ///  
        public TransactionTraceIdentifier TransactionTraceId 
        {
            get 
            {
                return this.transactionTraceIdentifier;
            }
        } 

        private int enlistmentIdentifier; 
        ///  
        /// A value that distiguishes between multiple enlistments on the same
        /// transaction instance by the same resource manager. 
        /// 
        public int EnlistmentIdentifier
        {
            get 
            {
                return this.enlistmentIdentifier; 
            } 
        }
 
        public override int GetHashCode()
        {
            return base.GetHashCode();  // Don't have anything better to do.
        } 

        public override bool Equals ( object objectToCompare ) 
        { 
            if ( ! ( objectToCompare is EnlistmentTraceIdentifier ) )
            { 
                return false;
            }

            EnlistmentTraceIdentifier id = ( EnlistmentTraceIdentifier )objectToCompare; 
            if ( (id.ResourceManagerIdentifier != this.ResourceManagerIdentifier ) ||
                ( id.TransactionTraceId != this.TransactionTraceId ) || 
                ( id.EnlistmentIdentifier != this.EnlistmentIdentifier ) ) 
            {
                return false; 
            }
            return true;
        }
 
        public static bool operator==( EnlistmentTraceIdentifier id1, EnlistmentTraceIdentifier id2 )
        { 
            return id1.Equals( id2 ); 
        }
 

        // We need to equality operator and the compiler doesn't let us have an equality operator without an inequality operator,
        // so we added it and FXCop doesn't like the fact that we don't call it.
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 
        public static bool operator!=( EnlistmentTraceIdentifier id1, EnlistmentTraceIdentifier id2 )
        { 
            return !id1.Equals( id2 ); 
        }
    } 

}


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

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