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

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

namespace System.ServiceModel.Dispatcher 
{
    using System; 
    using System.ServiceModel.Channels; 
    using System.Collections;
    using System.Runtime.Serialization; 
    using System.ServiceModel.Diagnostics;

    internal sealed class MessageOperationFormatter : IClientMessageFormatter, IDispatchMessageFormatter
    { 
        static MessageOperationFormatter instance;
 
        internal static MessageOperationFormatter Instance 
        {
            get 
            {
                if (MessageOperationFormatter.instance == null)
                    MessageOperationFormatter.instance = new MessageOperationFormatter();
                return MessageOperationFormatter.instance; 
            }
        } 
 
        public object DeserializeReply(Message message, object[] parameters)
        { 
            if (message == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("message"));
            if (parameters != null && parameters.Length > 0)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SFxParametersMustBeEmpty))); 

            return message; 
        } 

        public void DeserializeRequest(Message message, object[] parameters) 
        {
            if (message == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("message"));
            if (parameters == null) 
                throw TraceUtility.ThrowHelperError(new ArgumentNullException("parameters"), message);
            if (parameters.Length != 1) 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SFxParameterMustBeArrayOfOneElement))); 

            parameters[0] = message; 
        }

        public bool IsFault(string operation, Exception error)
        { 
            return false;
        } 
 
        public MessageFault SerializeFault(Exception error)
        { 

            throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxMessageOperationFormatterCannotSerializeFault)));
        }
 
        public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result)
        { 
            if (!(result is Message)) 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SFxResultMustBeMessage)));
            if (parameters != null && parameters.Length > 0) 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SFxParametersMustBeEmpty)));

            return (Message)result;
        } 

        public Message SerializeRequest(MessageVersion messageVersion, object[] parameters) 
        { 
            if (parameters == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("parameters")); 
            if (parameters.Length != 1 || !(parameters[0] is Message))
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SFxParameterMustBeMessage)));

            return (Message)parameters[0]; 
        }
    } 
} 

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