scripts
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
using System;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
using System.Threading;
|
||||
|
||||
namespace System.Runtime.Remoting.Contexts
|
||||
{
|
||||
// Token: 0x020003BE RID: 958
|
||||
internal class CrossContextChannel : IMessageSink
|
||||
{
|
||||
// Token: 0x0600261E RID: 9758 RVA: 0x0007DDC0 File Offset: 0x0007BFC0
|
||||
public IMessage SyncProcessMessage(IMessage msg)
|
||||
{
|
||||
ServerIdentity serverIdentity = (ServerIdentity)RemotingServices.GetMessageTargetIdentity(msg);
|
||||
Context context = null;
|
||||
if (Thread.CurrentContext != serverIdentity.Context)
|
||||
{
|
||||
context = Context.SwitchToContext(serverIdentity.Context);
|
||||
}
|
||||
IMessage message;
|
||||
try
|
||||
{
|
||||
Context.NotifyGlobalDynamicSinks(true, msg, false, false);
|
||||
Thread.CurrentContext.NotifyDynamicSinks(true, msg, false, false);
|
||||
message = serverIdentity.Context.GetServerContextSinkChain().SyncProcessMessage(msg);
|
||||
Context.NotifyGlobalDynamicSinks(false, msg, false, false);
|
||||
Thread.CurrentContext.NotifyDynamicSinks(false, msg, false, false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
message = new ReturnMessage(ex, (IMethodCallMessage)msg);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (context != null)
|
||||
{
|
||||
Context.SwitchToContext(context);
|
||||
}
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
// Token: 0x0600261F RID: 9759 RVA: 0x0007DE94 File Offset: 0x0007C094
|
||||
public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink)
|
||||
{
|
||||
ServerIdentity serverIdentity = (ServerIdentity)RemotingServices.GetMessageTargetIdentity(msg);
|
||||
Context context = null;
|
||||
if (Thread.CurrentContext != serverIdentity.Context)
|
||||
{
|
||||
context = Context.SwitchToContext(serverIdentity.Context);
|
||||
}
|
||||
IMessageCtrl messageCtrl2;
|
||||
try
|
||||
{
|
||||
Context.NotifyGlobalDynamicSinks(true, msg, false, true);
|
||||
Thread.CurrentContext.NotifyDynamicSinks(true, msg, false, false);
|
||||
if (replySink != null)
|
||||
{
|
||||
replySink = new CrossContextChannel.ContextRestoreSink(replySink, context, msg);
|
||||
}
|
||||
IMessageCtrl messageCtrl = serverIdentity.AsyncObjectProcessMessage(msg, replySink);
|
||||
if (replySink == null)
|
||||
{
|
||||
Context.NotifyGlobalDynamicSinks(false, msg, false, false);
|
||||
Thread.CurrentContext.NotifyDynamicSinks(false, msg, false, false);
|
||||
}
|
||||
messageCtrl2 = messageCtrl;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (replySink != null)
|
||||
{
|
||||
replySink.SyncProcessMessage(new ReturnMessage(ex, (IMethodCallMessage)msg));
|
||||
}
|
||||
messageCtrl2 = null;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (context != null)
|
||||
{
|
||||
Context.SwitchToContext(context);
|
||||
}
|
||||
}
|
||||
return messageCtrl2;
|
||||
}
|
||||
|
||||
// Token: 0x17000721 RID: 1825
|
||||
// (get) Token: 0x06002620 RID: 9760 RVA: 0x0007DF90 File Offset: 0x0007C190
|
||||
public IMessageSink NextSink
|
||||
{
|
||||
get
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x020003BF RID: 959
|
||||
private class ContextRestoreSink : IMessageSink
|
||||
{
|
||||
// Token: 0x06002621 RID: 9761 RVA: 0x0007DF94 File Offset: 0x0007C194
|
||||
public ContextRestoreSink(IMessageSink next, Context context, IMessage call)
|
||||
{
|
||||
this._next = next;
|
||||
this._context = context;
|
||||
this._call = call;
|
||||
}
|
||||
|
||||
// Token: 0x06002622 RID: 9762 RVA: 0x0007DFB4 File Offset: 0x0007C1B4
|
||||
public IMessage SyncProcessMessage(IMessage msg)
|
||||
{
|
||||
IMessage message;
|
||||
try
|
||||
{
|
||||
Context.NotifyGlobalDynamicSinks(false, msg, false, false);
|
||||
Thread.CurrentContext.NotifyDynamicSinks(false, msg, false, false);
|
||||
message = this._next.SyncProcessMessage(msg);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
message = new ReturnMessage(ex, (IMethodCallMessage)this._call);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (this._context != null)
|
||||
{
|
||||
Context.SwitchToContext(this._context);
|
||||
}
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
// Token: 0x06002623 RID: 9763 RVA: 0x0007E05C File Offset: 0x0007C25C
|
||||
public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
// Token: 0x17000722 RID: 1826
|
||||
// (get) Token: 0x06002624 RID: 9764 RVA: 0x0007E064 File Offset: 0x0007C264
|
||||
public IMessageSink NextSink
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._next;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000EDF RID: 3807
|
||||
private IMessageSink _next;
|
||||
|
||||
// Token: 0x04000EE0 RID: 3808
|
||||
private Context _context;
|
||||
|
||||
// Token: 0x04000EE1 RID: 3809
|
||||
private IMessage _call;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user