DispatchOperation.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / DispatchOperation.cs / 3 / DispatchOperation.cs

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

namespace System.ServiceModel.Dispatcher 
{
    using System; 
    using System.ServiceModel; 
    using System.Collections.Generic;
    using System.Security.Principal; 

    public sealed class DispatchOperation
    {
        string action; 
        SynchronizedCollection callContextInitializers;
        SynchronizedCollection faultContractInfos; 
        IDispatchMessageFormatter formatter; 
        IDispatchFaultFormatter faultFormatter;
        ImpersonationOption impersonation; 
        IOperationInvoker invoker;
        bool isTerminating;
        string name;
        SynchronizedCollection parameterInspectors; 
        DispatchRuntime parent;
        bool releaseInstanceAfterCall; 
        bool releaseInstanceBeforeCall; 
        string replyAction;
        bool transactionAutoComplete; 
        bool transactionRequired;
        bool deserializeRequest = true;
        bool serializeReply = true;
        bool isOneWay; 
        bool autoDisposeParameters = true;
        bool hasNoDisposableParameters; 
        bool isFaultFormatterSetExplicit = false; 

        public DispatchOperation(DispatchRuntime parent, string name, string action) 
        {
            if (parent == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("parent");
            if (name == null) 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("name");
 
            this.parent = parent; 
            this.name=  name;
            this.action = action; 
            this.impersonation = OperationBehaviorAttribute.DefaultImpersonationOption;

            this.callContextInitializers = parent.NewBehaviorCollection();
            this.faultContractInfos = parent.NewBehaviorCollection(); 
            this.parameterInspectors = parent.NewBehaviorCollection();
            this.isOneWay = true; 
        } 

        public DispatchOperation(DispatchRuntime parent, string name, string action, string replyAction) 
            : this(parent, name, action)
        {
            this.replyAction = replyAction;
            this.isOneWay = false; 
        }
 
        public bool IsOneWay 
        {
            get { return this.isOneWay; } 
        }

        public string Action
        { 
            get { return this.action; }
        } 
 
        public SynchronizedCollection CallContextInitializers
        { 
            get { return this.callContextInitializers; }
        }

        public SynchronizedCollection FaultContractInfos 
        {
            get { return this.faultContractInfos; } 
        } 

        public bool AutoDisposeParameters 
        {
            get { return this.autoDisposeParameters; }

            set 
            {
                lock (this.parent.ThisLock) 
                { 
                    this.parent.InvalidateRuntime();
                    this.autoDisposeParameters = value; 
                }
            }
        }
 
        public IDispatchMessageFormatter Formatter
        { 
            get { return this.formatter; } 
            set
            { 
                lock (this.parent.ThisLock)
                {
                    this.parent.InvalidateRuntime();
                    this.formatter = value; 
                }
            } 
        } 

        internal IDispatchFaultFormatter FaultFormatter 
        {
            get
            {
                if (this.faultFormatter == null) 
                {
                    this.faultFormatter = new DataContractSerializerFaultFormatter(this.faultContractInfos); 
                } 
                return this.faultFormatter;
            } 
            set
            {
                lock (this.parent.ThisLock)
                { 
                    this.parent.InvalidateRuntime();
                    this.faultFormatter = value; 
                    this.isFaultFormatterSetExplicit = true; 
                }
            } 
        }

        internal bool IsFaultFormatterSetExplicit
        { 
            get
            { 
                return this.isFaultFormatterSetExplicit; 
            }
        } 

        public ImpersonationOption Impersonation
        {
            get { return this.impersonation; } 
            set
            { 
                lock (this.parent.ThisLock) 
                {
                    this.parent.InvalidateRuntime(); 
                    this.impersonation = value;
                }
            }
        } 

        internal bool HasNoDisposableParameters 
        { 
            get { return this.hasNoDisposableParameters; }
            set { this.hasNoDisposableParameters = value; } 
        }

        internal IDispatchMessageFormatter InternalFormatter
        { 
            get { return this.formatter; }
            set { this.formatter = value; } 
        } 

        internal IOperationInvoker InternalInvoker 
        {
            get { return this.invoker; }
            set { this.invoker = value; }
        } 

        public IOperationInvoker Invoker 
        { 
            get { return this.invoker; }
            set 
            {
                lock (this.parent.ThisLock)
                {
                    this.parent.InvalidateRuntime(); 
                    this.invoker = value;
                } 
            } 
        }
 
        public bool IsTerminating
        {
            get { return this.isTerminating; }
            set 
            {
                lock (this.parent.ThisLock) 
                { 
                    this.parent.InvalidateRuntime();
                    this.isTerminating = value; 
                }
            }
        }
 
        public string Name
        { 
            get { return this.name; } 
        }
 
        public SynchronizedCollection ParameterInspectors
        {
            get { return this.parameterInspectors; }
        } 

        public DispatchRuntime Parent 
        { 
            get { return this.parent; }
        } 

        public bool ReleaseInstanceAfterCall
        {
            get { return this.releaseInstanceAfterCall; } 
            set
            { 
                lock (this.parent.ThisLock) 
                {
                    this.parent.InvalidateRuntime(); 
                    this.releaseInstanceAfterCall = value;
                }
            }
        } 

        public bool ReleaseInstanceBeforeCall 
        { 
            get { return this.releaseInstanceBeforeCall; }
            set 
            {
                lock (this.parent.ThisLock)
                {
                    this.parent.InvalidateRuntime(); 
                    this.releaseInstanceBeforeCall = value;
                } 
            } 
        }
 
        public string ReplyAction
        {
            get { return this.replyAction; }
        } 

        public bool DeserializeRequest 
        { 
            get { return this.deserializeRequest; }
            set 
            {
                lock (this.parent.ThisLock)
                {
                    this.parent.InvalidateRuntime(); 
                    this.deserializeRequest = value;
                } 
            } 
        }
 
        public bool SerializeReply
        {
            get { return this.serializeReply; }
            set 
            {
                lock (this.parent.ThisLock) 
                { 
                    this.parent.InvalidateRuntime();
                    this.serializeReply = value; 
                }
            }
        }
 
        public bool TransactionAutoComplete
        { 
            get { return this.transactionAutoComplete; } 
            set
            { 
                lock (this.parent.ThisLock)
                {
                    this.parent.InvalidateRuntime();
                    this.transactionAutoComplete = value; 
                }
            } 
        } 

        public bool TransactionRequired 
        {
            get { return this.transactionRequired; }
            set
            { 
                lock (this.parent.ThisLock)
                { 
                    this.parent.InvalidateRuntime(); 
                    this.transactionRequired = value;
                } 
            }
        }
    }
} 

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