File: System\ServiceModel\Dispatcher\SharedRuntimeState.cs
Project: ndp\cdf\src\WCF\ServiceModel\System.ServiceModel.csproj (System.ServiceModel)
//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
 
namespace System.ServiceModel.Dispatcher
{
    using System;
 
    class SharedRuntimeState
    {
        bool isImmutable;
        bool enableFaults = true;
        bool isOnServer;
        bool manualAddressing;
        bool validateMustUnderstand = true;
 
        internal SharedRuntimeState(bool isOnServer)
        {
            this.isOnServer = isOnServer;
        }
 
        internal bool EnableFaults
        {
            get { return this.enableFaults; }
            set { this.enableFaults = value; }
        }
 
        internal bool IsOnServer
        {
            get { return this.isOnServer; }
        }
 
        internal bool ManualAddressing
        {
            get { return this.manualAddressing; }
            set { this.manualAddressing = value; }
        }
 
        internal bool ValidateMustUnderstand
        {
            get { return this.validateMustUnderstand; }
            set { this.validateMustUnderstand = value; }
        }
 
        internal void LockDownProperties()
        {
            this.isImmutable = true;
        }
 
        internal void ThrowIfImmutable()
        {
            if (this.isImmutable)
            {
                if (this.IsOnServer)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxImmutableServiceHostBehavior0)));
                }
                else
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxImmutableChannelFactoryBehavior0)));
                }
            }
        }
    }
}