using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Runtime.InteropServices;
+using System.Threading;
namespace System.Runtime.Remoting.Proxies
{
out object [] out_args)
{
MonoMethodMessage mMsg = (MonoMethodMessage) msg;
- mMsg.LogicalCallContext = CallContext.CreateLogicalCallContext (true);
+ mMsg.LogicalCallContext = Thread.CurrentThread.GetMutableExecutionContext().LogicalCallContext;
CallType call_type = mMsg.CallType;
-#if MOONLIGHT
- bool is_remproxy = false;
-#else
bool is_remproxy = (rp is RemotingProxy);
-#endif
out_args = null;
IMethodReturnMessage res_msg = null;
// Check for constructor msg
if (mMsg.MethodBase.IsConstructor)
{
-#if !MOONLIGHT
if (is_remproxy)
res_msg = (IMethodReturnMessage) (rp as RemotingProxy).ActivateRemoteObject ((IMethodMessage) msg);
else
-#endif
msg = new ConstructionCall (rp.GetProxiedType ());
}
}
}
- if (res_msg.LogicalCallContext != null && res_msg.LogicalCallContext.HasInfo)
- CallContext.UpdateCurrentCallContext (res_msg.LogicalCallContext);
+ if (res_msg.LogicalCallContext != null && res_msg.LogicalCallContext.HasInfo) {
+ Thread.CurrentThread.GetMutableExecutionContext().LogicalCallContext.Merge (res_msg.LogicalCallContext);
+ }
exc = res_msg.Exception;