scripts
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Remoting.Proxies;
|
||||
using System.Threading;
|
||||
|
||||
namespace System.Runtime.Remoting.Messaging
|
||||
{
|
||||
// Token: 0x02000408 RID: 1032
|
||||
internal class StackBuilderSink : IMessageSink
|
||||
{
|
||||
// Token: 0x06002838 RID: 10296 RVA: 0x00083938 File Offset: 0x00081B38
|
||||
public StackBuilderSink(MarshalByRefObject obj, bool forceInternalExecute)
|
||||
{
|
||||
this._target = obj;
|
||||
if (!forceInternalExecute && RemotingServices.IsTransparentProxy(obj))
|
||||
{
|
||||
this._rp = RemotingServices.GetRealProxy(obj);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06002839 RID: 10297 RVA: 0x00083970 File Offset: 0x00081B70
|
||||
public IMessage SyncProcessMessage(IMessage msg)
|
||||
{
|
||||
this.CheckParameters(msg);
|
||||
if (this._rp != null)
|
||||
{
|
||||
return this._rp.Invoke(msg);
|
||||
}
|
||||
return RemotingServices.InternalExecuteMessage(this._target, (IMethodCallMessage)msg);
|
||||
}
|
||||
|
||||
// Token: 0x0600283A RID: 10298 RVA: 0x000839B0 File Offset: 0x00081BB0
|
||||
public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink)
|
||||
{
|
||||
object[] array = new object[] { msg, replySink };
|
||||
ThreadPool.QueueUserWorkItem(new WaitCallback(this.ExecuteAsyncMessage), array);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Token: 0x0600283B RID: 10299 RVA: 0x000839E0 File Offset: 0x00081BE0
|
||||
private void ExecuteAsyncMessage(object ob)
|
||||
{
|
||||
object[] array = (object[])ob;
|
||||
IMethodCallMessage methodCallMessage = (IMethodCallMessage)array[0];
|
||||
IMessageSink messageSink = (IMessageSink)array[1];
|
||||
this.CheckParameters(methodCallMessage);
|
||||
IMessage message;
|
||||
if (this._rp != null)
|
||||
{
|
||||
message = this._rp.Invoke(methodCallMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
message = RemotingServices.InternalExecuteMessage(this._target, methodCallMessage);
|
||||
}
|
||||
messageSink.SyncProcessMessage(message);
|
||||
}
|
||||
|
||||
// Token: 0x170007E7 RID: 2023
|
||||
// (get) Token: 0x0600283C RID: 10300 RVA: 0x00083A40 File Offset: 0x00081C40
|
||||
public IMessageSink NextSink
|
||||
{
|
||||
get
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600283D RID: 10301 RVA: 0x00083A44 File Offset: 0x00081C44
|
||||
private void CheckParameters(IMessage msg)
|
||||
{
|
||||
IMethodCallMessage methodCallMessage = (IMethodCallMessage)msg;
|
||||
ParameterInfo[] parameters = methodCallMessage.MethodBase.GetParameters();
|
||||
int num = 0;
|
||||
foreach (ParameterInfo parameterInfo in parameters)
|
||||
{
|
||||
object arg = methodCallMessage.GetArg(num++);
|
||||
Type type = parameterInfo.ParameterType;
|
||||
if (type.IsByRef)
|
||||
{
|
||||
type = type.GetElementType();
|
||||
}
|
||||
if (arg != null && !type.IsInstanceOfType(arg))
|
||||
{
|
||||
throw new RemotingException(string.Concat(new object[]
|
||||
{
|
||||
"Cannot cast argument ",
|
||||
parameterInfo.Position,
|
||||
" of type '",
|
||||
arg.GetType().AssemblyQualifiedName,
|
||||
"' to type '",
|
||||
type.AssemblyQualifiedName,
|
||||
"'"
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000FA4 RID: 4004
|
||||
private MarshalByRefObject _target;
|
||||
|
||||
// Token: 0x04000FA5 RID: 4005
|
||||
private RealProxy _rp;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user