internal static void NotifyDynamicSinks(IMessage msg, ArrayWithSize dynSinks, bool bCliSide, bool bStart, bool bAsync) { for (int i = 0; i < dynSinks.Count; i++) { if (bStart) { dynSinks.Sinks[i].ProcessMessageStart(msg, bCliSide, bAsync); } else { dynSinks.Sinks[i].ProcessMessageFinish(msg, bCliSide, bAsync); } } }
internal static void NotifyDynamicSinks(IMessage msg, ArrayWithSize dynSinks, bool bCliSide, bool bStart, bool bAsync) { for (int i = 0; i < dynSinks.Count; i++) { if (bStart) { dynSinks.Sinks[i].ProcessMessageStart(msg, bCliSide, bAsync); } else { dynSinks.Sinks[i].ProcessMessageFinish(msg, bCliSide, bAsync); } } }
internal virtual bool NotifyDynamicSinks( IMessage msg, bool bCliSide, bool bStart, bool bAsync, bool bNotifyGlobals) { bool bHasDynamicSinks = false; if (bNotifyGlobals && (_dphGlobal.DynamicProperties != null)) { ArrayWithSize globalSinks = GlobalDynamicSinks; if (globalSinks != null) { DynamicPropertyHolder.NotifyDynamicSinks( msg, globalSinks, bCliSide, bStart, bAsync); bHasDynamicSinks = true; } } ArrayWithSize perCtxSinks = DynamicSinks; if (perCtxSinks != null) { DynamicPropertyHolder.NotifyDynamicSinks( msg, perCtxSinks, bCliSide, bStart, bAsync); bHasDynamicSinks = true; } return(bHasDynamicSinks); } // NotifyDynamicSinks
internal virtual bool NotifyDynamicSinks(IMessage msg, bool bCliSide, bool bStart, bool bAsync, bool bNotifyGlobals) { bool flag = false; if (bNotifyGlobals && Context._dphGlobal.DynamicProperties != null) { ArrayWithSize globalDynamicSinks = Context.GlobalDynamicSinks; if (globalDynamicSinks != null) { DynamicPropertyHolder.NotifyDynamicSinks(msg, globalDynamicSinks, bCliSide, bStart, bAsync); flag = true; } } ArrayWithSize dynamicSinks = this.DynamicSinks; if (dynamicSinks != null) { DynamicPropertyHolder.NotifyDynamicSinks(msg, dynamicSinks, bCliSide, bStart, bAsync); flag = true; } return(flag); }
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; }
// This is used when a TP is called with SyncProcessMessage internal static IMessage CallProcessMessage(IMessageSink ms, IMessage reqMsg, ArrayWithSize proxySinks, Thread currentThread, Context currentContext, bool bSkippingContextChain) { // Notify Dynamic Sinks: CALL starting if (proxySinks != null) { DynamicPropertyHolder.NotifyDynamicSinks( reqMsg, proxySinks, true, // bCliSide true, // bStart false); // bAsync } RemotingServices.LogRemotingStage(RemotingServices.CLIENT_MSG_SINK_CHAIN); bool bHasDynamicSinks = false; if (bSkippingContextChain) { // this would have been done in the client context terminator sink bHasDynamicSinks = currentContext.NotifyDynamicSinks(reqMsg, true, // bCliSide true, // bStart false, // bAsync true); // bNotifyGlobals ChannelServices.NotifyProfiler(reqMsg, RemotingProfilerEvent.ClientSend); } if (ms == null) { throw new RemotingException( Environment.GetResourceString( "Remoting_Proxy_NoChannelSink")); } IMessage retMsg = ms.SyncProcessMessage(reqMsg); if (bSkippingContextChain) { // this would have been done in the client context terminator sink ChannelServices.NotifyProfiler(retMsg, RemotingProfilerEvent.ClientReceive); if (bHasDynamicSinks) { currentContext.NotifyDynamicSinks( retMsg, true, // bCliSide false, // bStart false, // bAsync true); // bNotifyGlobals } } IMethodReturnMessage mrm = retMsg as IMethodReturnMessage; if (retMsg == null || mrm == null) { throw new RemotingException( Environment.GetResourceString("Remoting_Message_BadType")); } // notify DynamicSinks: CALL returned if (proxySinks != null) { DynamicPropertyHolder.NotifyDynamicSinks( retMsg, proxySinks, true, // bCliSide false, // bStart false); // bAsync } RemotingServices.LogRemotingStage(RemotingServices.CLIENT_RET_PROPAGATION); return retMsg; }