Пример #1
0
        // GetCurrentTransactionAndScope
        //
        // Returns both the current transaction and scope.  This is implemented for optimizations
        // in TransactionScope because it is required to get both of them in several cases.
        internal static void GetCurrentTransactionAndScope(
            TxLookup defaultLookup,
            out Transaction?current,
            out TransactionScope?currentScope,
            out Transaction?contextTransaction)
        {
            current            = null;
            currentScope       = null;
            contextTransaction = null;

            ContextData contextData = ContextData.LookupContextData(defaultLookup);

            if (contextData != null)
            {
                currentScope = contextData.CurrentScope;
                current      = FastGetTransaction(currentScope, contextData, out contextTransaction);
            }
        }
Пример #2
0
        internal static ContextData LookupContextData(TxLookup defaultLookup)
        {
            if (CallContextCurrentData.TryGetCurrentData(out ContextData currentData))
            {
                if (currentData.CurrentScope == null && currentData.CurrentTransaction == null && defaultLookup != TxLookup.DefaultCallContext)
                {
                    // Clear Call Context Data
                    CallContextCurrentData.ClearCurrentData(null, true);
                    return(TLSCurrentData);
                }

                return(currentData);
            }
            else
            {
                return(TLSCurrentData);
            }
        }
Пример #3
0
 // GetCurrentTransactionAndScope
 //
 // Returns both the current transaction and scope.  This is implemented for optimizations
 // in TransactionScope because it is required to get both of them in several cases.
 internal static void GetCurrentTransactionAndScope(
     TxLookup defaultLookup,
     out Transaction current, 
     out TransactionScope currentScope, 
     out Transaction contextTransaction
     )
 {
     current = null;
     currentScope = null;
     contextTransaction = null;
     
     ContextData contextData = ContextData.LookupContextData(defaultLookup);
     if (contextData != null)
     {
         currentScope = contextData.CurrentScope;
         current = FastGetTransaction(currentScope, contextData, out contextTransaction);
     }
 }
Пример #4
0
 internal static ContextData LookupContextData(TxLookup defaultLookup)
 {
     ContextData currentData = null;          
     if (CallContextCurrentData.TryGetCurrentData(out currentData))
     {
         if (currentData.CurrentScope == null && currentData.CurrentTransaction == null && defaultLookup != TxLookup.DefaultCallContext)
         {
             // Clear Call Context Data
             CallContextCurrentData.ClearCurrentData(null, true);
             return ContextData.TLSCurrentData;
         }
        
         return currentData;
     }
     else
     {
         return ContextData.TLSCurrentData;                        
     }
 }