MessageDescription.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 / Description / MessageDescription.cs / 1 / MessageDescription.cs

                            //------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Description
{ 
    using System.Collections.Generic;
    using System.ServiceModel.Channels; 
    using System.ServiceModel; 
    using System.Xml;
    using System.Runtime.Serialization; 
    using System.Diagnostics;
    using System.Net.Security;
    using System.ServiceModel.Security;
 
    [DebuggerDisplay("Action={action}, Direction={direction}, MessageType={messageType}")]
    public class MessageDescription 
    { 
        string action;
        MessageDirection direction; 
        MessageDescriptionItems items;
        XmlName messageName;
        Type messageType;
        XmlQualifiedName xsdType; 
        ProtectionLevel protectionLevel;
        bool hasProtectionLevel; 
 
        public MessageDescription(string action, MessageDirection direction) : this(action, direction, null) { }
        internal MessageDescription(string action, MessageDirection direction, MessageDescriptionItems items) 
        {
            if (!MessageDirectionHelper.IsDefined(direction))
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("direction"));
 
            this.action = action;
            this.direction = direction; 
            this.items = items; 
        }
 
        internal MessageDescription(MessageDescription other)
        {
            this.action = other.action;
            this.direction = other.direction; 
            this.Items.Body = other.Items.Body.Clone();
            foreach (MessageHeaderDescription mhd in other.Items.Headers) 
            { 
                this.Items.Headers.Add(mhd.Clone() as MessageHeaderDescription);
            } 
            foreach (MessagePropertyDescription mpd in other.Items.Properties)
            {
                this.Items.Properties.Add(mpd.Clone() as MessagePropertyDescription);
            } 
            this.MessageName = other.MessageName;
            this.MessageType = other.MessageType; 
            this.XsdTypeName = other.XsdTypeName; 
            this.hasProtectionLevel = other.hasProtectionLevel;
            this.ProtectionLevel = other.ProtectionLevel; 
        }

        internal MessageDescription Clone()
        { 
            return new MessageDescription(this);
        } 
 
        public string Action
        { 
            get { return action; }
            internal set { action = value; }
        }
 
        public MessageBodyDescription Body
        { 
            get { return Items.Body; } 
        }
 
        public MessageDirection Direction
        {
            get { return direction; }
        } 

        public MessageHeaderDescriptionCollection Headers 
        { 
            get { return Items.Headers; }
        } 

        public MessagePropertyDescriptionCollection Properties
        {
            get { return Items.Properties; } 
        }
 
 
        internal MessageDescriptionItems Items
        { 
            get
            {
                if (items == null)
                    items = new MessageDescriptionItems(); 
                return items;
            } 
        } 

        public ProtectionLevel ProtectionLevel 
        {
            get { return this.protectionLevel; }
            set
            { 
                if (!ProtectionLevelHelper.IsDefined(value))
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value")); 
                this.protectionLevel = value; 
                this.hasProtectionLevel = true;
            } 
        }

        public bool HasProtectionLevel
        { 
            get { return this.hasProtectionLevel; }
        } 
 
        internal XmlName MessageName
        { 
            get { return messageName; }
            set { messageName = value; }
        }
 
        // Not serializable on purpose, metadata import/export cannot
        // produce it, only available when binding to runtime 
        public Type MessageType 
        {
            get { return messageType; } 
            set { messageType = value; }
        }

        internal bool IsTypedMessage 
        {
            get 
            { 
                return messageType != null;
            } 
        }

        internal bool IsUntypedMessage
        { 
            get
            { 
                return (Body.ReturnValue != null && Body.Parts.Count == 0 && Body.ReturnValue.Type == typeof(Message)) || 
                     (Body.ReturnValue == null && Body.Parts.Count == 1 && Body.Parts[0].Type == typeof(Message));
            } 
        }

        internal bool IsVoid
        { 
            get
            { 
                return !IsTypedMessage && Body.Parts.Count == 0 && (Body.ReturnValue == null || Body.ReturnValue.Type == typeof(void)); 
            }
        } 

        internal XmlQualifiedName XsdTypeName
        {
            get { return xsdType; } 
            set { xsdType = value; }
        } 
 
        internal void ResetProtectionLevel()
        { 
            this.protectionLevel = ProtectionLevel.None;
            this.hasProtectionLevel = false;
        }
    } 

    internal class MessageDescriptionItems 
    { 
        MessageHeaderDescriptionCollection headers;
        MessageBodyDescription body; 
        MessagePropertyDescriptionCollection properties;

        internal MessageBodyDescription Body
        { 
            get
            { 
                if (body == null) 
                    body = new MessageBodyDescription();
                return body; 
            }
            set
            {
                this.body = value; 
            }
        } 
 
        internal MessageHeaderDescriptionCollection Headers
        { 
            get
            {
                if (headers == null)
                    headers = new MessageHeaderDescriptionCollection(); 
                return headers;
            } 
        } 

        internal MessagePropertyDescriptionCollection Properties 
        {
            get
            {
                if (properties == null) 
                    properties = new MessagePropertyDescriptionCollection();
                return properties; 
            } 
        }
    } 
}

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