e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
81 lines
3.4 KiB
C#
81 lines
3.4 KiB
C#
//-----------------------------------------------------------------------------
|
|
// 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];
|
|
}
|
|
}
|
|
}
|