ClientOperation.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 / ClientOperation.cs / 3 / ClientOperation.cs

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

namespace System.ServiceModel.Dispatcher 
{
    using System; 
    using System.Reflection; 
    using System.Collections.Generic;
 
    public sealed class ClientOperation
    {
        string action;
        SynchronizedCollection faultContractInfos; 
        bool serializeRequest;
        bool deserializeReply; 
        IClientMessageFormatter formatter; 
        IClientFaultFormatter faultFormatter;
        bool isInitiating = true; 
        bool isOneWay;
        bool isTerminating;
        string name;
        SynchronizedCollection parameterInspectors; 
        ClientRuntime parent;
        string replyAction; 
        MethodInfo beginMethod; 
        MethodInfo endMethod;
        MethodInfo syncMethod; 
        bool isFaultFormatterSetExplicit = false;

        public ClientOperation(ClientRuntime parent, string name, string action)
            : this(parent, name, action, null) 
        {
        } 
 
        public ClientOperation(ClientRuntime parent, string name, string action, string replyAction)
        { 
            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.replyAction = replyAction;

            this.faultContractInfos = parent.NewBehaviorCollection();
            this.parameterInspectors = parent.NewBehaviorCollection(); 
        }
 
        public string Action 
        {
            get { return this.action; } 
        }

        public SynchronizedCollection FaultContractInfos
        { 
            get { return this.faultContractInfos; }
        } 
 
        public MethodInfo BeginMethod
        { 
            get { return this.beginMethod; }
            set
            {
                lock (this.parent.ThisLock) 
                {
                    this.parent.InvalidateRuntime(); 
                    this.beginMethod = value; 
                }
            } 
        }

        public MethodInfo EndMethod
        { 
            get { return this.endMethod; }
            set 
            { 
                lock (this.parent.ThisLock)
                { 
                    this.parent.InvalidateRuntime();
                    this.endMethod = value;
                }
            } 
        }
 
        public MethodInfo SyncMethod 
        {
            get { return this.syncMethod; } 
            set
            {
                lock (this.parent.ThisLock)
                { 
                    this.parent.InvalidateRuntime();
                    this.syncMethod = value; 
                } 
            }
        } 

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

        internal IClientFaultFormatter 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; 
            }
        } 
 
        internal IClientMessageFormatter InternalFormatter
        { 
            get { return this.formatter; }
            set { this.formatter = value; }
        }
 
        public bool IsInitiating
        { 
            get { return this.isInitiating; } 
            set
            { 
                lock (this.parent.ThisLock)
                {
                    this.parent.InvalidateRuntime();
                    this.isInitiating = value; 
                }
            } 
        } 

        public bool IsOneWay 
        {
            get { return this.isOneWay; }
            set
            { 
                lock (this.parent.ThisLock)
                { 
                    this.parent.InvalidateRuntime(); 
                    this.isOneWay = 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 ClientRuntime Parent 
        {
            get { return this.parent; }
        }
 
        public string ReplyAction
        { 
            get { return this.replyAction; } 
        }
 
        public bool SerializeRequest
        {
            get { return this.serializeRequest; }
            set 
            {
                lock (this.parent.ThisLock) 
                { 
                    this.parent.InvalidateRuntime();
                    this.serializeRequest = value; 
                }
            }
        }
 
        public bool DeserializeReply
        { 
            get { return this.deserializeReply; } 
            set
            { 
                lock (this.parent.ThisLock)
                {
                    this.parent.InvalidateRuntime();
                    this.deserializeReply = 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