internal static IMessage CallProcessMessage(IMessageSink ms, IMessage reqMsg, ArrayWithSize proxySinks, Thread currentThread, Context currentContext, bool bSkippingContextChain)
{
if (proxySinks != null)
{
DynamicPropertyHolder.NotifyDynamicSinks(reqMsg, proxySinks, true, true, false);
}
bool flag = false;
if (bSkippingContextChain)
{
flag = currentContext.NotifyDynamicSinks(reqMsg, true, true, false, true);
ChannelServices.NotifyProfiler(reqMsg, RemotingProfilerEvent.ClientSend);
}
if (ms == null)
{
throw new RemotingException(Environment.GetResourceString("Remoting_Proxy_NoChannelSink"));
}
IMessage msg = ms.SyncProcessMessage(reqMsg);
if (bSkippingContextChain)
{
ChannelServices.NotifyProfiler(msg, RemotingProfilerEvent.ClientReceive);
if (flag)
{
currentContext.NotifyDynamicSinks(msg, true, false, false, true);
}
}
IMethodReturnMessage message2 = msg as IMethodReturnMessage;
if ((msg == null) || (message2 == null))
{
throw new RemotingException(Environment.GetResourceString("Remoting_Message_BadType"));
}
if (proxySinks != null)
{
DynamicPropertyHolder.NotifyDynamicSinks(msg, proxySinks, true, false, false);
}
return msg;
}