DurableRuntimeValidator.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 / cdf / src / NetFx35 / System.WorkflowServices / System / ServiceModel / Dispatcher / DurableRuntimeValidator.cs / 1305376 / DurableRuntimeValidator.cs

                            //------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Dispatcher
{ 
    using System.ServiceModel.Description;
    using System.Workflow.Runtime; 
    using System.Runtime; 

    class DurableRuntimeValidator 
    {
        ConcurrencyMode concurrencyMode;
        UnknownExceptionAction exceptionAction;
        bool saveStateInOperationTransaction; 
        bool validated;
 
        public DurableRuntimeValidator(bool saveStateInOperationTransaction, UnknownExceptionAction exceptionAction) 
        {
            this.saveStateInOperationTransaction = saveStateInOperationTransaction; 
            this.exceptionAction = exceptionAction;
            this.validated = false;
        }
 
        public ConcurrencyMode ConcurrencyMode
        { 
            get 
            {
                if (!this.validated) 
                {
                    ValidateRuntime();
                }
 
                return concurrencyMode;
            } 
        } 

        public void ValidateRuntime() 
        {
            if (!this.validated)
            {
                Fx.Assert( 
                    OperationContext.Current != null &&
                    OperationContext.Current.EndpointDispatcher != null && 
                    OperationContext.Current.EndpointDispatcher.DispatchRuntime != null, 
                    "There shouldn't have been a null value in " +
                    "OperationContext.Current.EndpointDispatcher.DispatchRuntime."); 

                this.concurrencyMode = OperationContext.Current.EndpointDispatcher.DispatchRuntime.ConcurrencyMode;

                if (this.concurrencyMode == ConcurrencyMode.Multiple) 
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( 
                        new InvalidOperationException( 
                        SR2.GetString(SR2.ConcurrencyMultipleNotSupported)));
                } 

                if (this.saveStateInOperationTransaction && this.concurrencyMode != ConcurrencyMode.Single)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( 
                        new InvalidOperationException(
                        SR2.GetString(SR2.SaveStateInTransactionRequiresSingle))); 
                } 

                if (this.concurrencyMode == ConcurrencyMode.Reentrant 
                    && this.exceptionAction == UnknownExceptionAction.AbortInstance)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
                        new InvalidOperationException( 
                        SR2.GetString(SR2.ConcurrencyReentrantAndAbortNotSupported)));
                } 
 
                this.validated = true;
            } 
        }
    }
}

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