public void Read(__BinaryParser input) { this.messageEnum = (MessageEnum)input.ReadInt32(); if (IOUtil.FlagTest(this.messageEnum, MessageEnum.NoReturnValue)) { this.returnValue = null; } else if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ReturnValueVoid)) { this.returnValue = BinaryMethodReturn.instanceOfVoid; } else if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ReturnValueInline)) { this.returnValue = IOUtil.ReadWithCode(input); } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInline)) { this.scallContext = (string)IOUtil.ReadWithCode(input); this.callContext = new LogicalCallContext { RemotingData = { LogicalCallID = this.scallContext } }; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInline)) { this.args = IOUtil.ReadArgs(input); } }
internal IMethodReturnMessage ReadArray(object[] returnA, IMethodCallMessage methodCallMessage, object handlerObject) { if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsIsArray)) { this.args = returnA; } else { int num1 = 0; if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray)) { if (returnA.Length < num1) { throw new SerializationException(Environment.GetResourceString("Serialization_Method")); } this.args = (object[])returnA[num1++]; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ReturnValueInArray)) { if (returnA.Length < num1) { throw new SerializationException(Environment.GetResourceString("Serialization_Method")); } this.returnValue = returnA[num1++]; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ExceptionInArray)) { if (returnA.Length < num1) { throw new SerializationException(Environment.GetResourceString("Serialization_Method")); } this.exception = (Exception)returnA[num1++]; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInArray)) { if (returnA.Length < num1) { throw new SerializationException(Environment.GetResourceString("Serialization_Method")); } this.callContext = returnA[num1++]; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.PropertyInArray)) { if (returnA.Length < num1) { throw new SerializationException(Environment.GetResourceString("Serialization_Method")); } object[] objArray = returnA; int index = num1; int num2 = 1; int num3 = index + num2; this.properties = objArray[index]; } } return((IMethodReturnMessage) new MethodResponse(methodCallMessage, handlerObject, new BinaryMethodReturnMessage(this.returnValue, this.args, this.exception, (LogicalCallContext)this.callContext, (object[])this.properties))); }
internal IMethodCallMessage ReadArray(object[] callA, object handlerObject) { if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsIsArray)) { this.args = callA; } else { int num1 = 0; if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray)) { if (callA.Length < num1) { throw new SerializationException(Environment.GetResourceString("Serialization_Method")); } this.args = (object[])callA[num1++]; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.GenericMethod)) { if (callA.Length < num1) { throw new SerializationException(Environment.GetResourceString("Serialization_Method")); } this.instArgs = (Type[])callA[num1++]; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.MethodSignatureInArray)) { if (callA.Length < num1) { throw new SerializationException(Environment.GetResourceString("Serialization_Method")); } this.methodSignature = callA[num1++]; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInArray)) { if (callA.Length < num1) { throw new SerializationException(Environment.GetResourceString("Serialization_Method")); } this.callContext = callA[num1++]; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.PropertyInArray)) { if (callA.Length < num1) { throw new SerializationException(Environment.GetResourceString("Serialization_Method")); } object[] objArray = callA; int index = num1; int num2 = 1; int num3 = index + num2; this.properties = objArray[index]; } } return((IMethodCallMessage) new MethodCall(handlerObject, new BinaryMethodCallMessage(this.uri, this.methodName, this.typeName, this.instArgs, this.args, this.methodSignature, (LogicalCallContext)this.callContext, (object[])this.properties))); }
private void DumpInternal() { if (BCLDebug.CheckEnabled("BINARY")) { if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInline)) { string text = this.callContext as string; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInline)) { for (int i = 0; i < this.args.Length; i++) { } } } }
internal void Read(__BinaryParser input) { this.messageEnum = (MessageEnum)input.ReadInt32(); this.methodName = (string)IOUtil.ReadWithCode(input); this.typeName = (string)IOUtil.ReadWithCode(input); if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInline)) { this.scallContext = (string)IOUtil.ReadWithCode(input); LogicalCallContext context = new LogicalCallContext { RemotingData = { LogicalCallID = this.scallContext } }; this.callContext = context; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInline)) { this.args = IOUtil.ReadArgs(input); } }
// Token: 0x060052BF RID: 21183 RVA: 0x001228C8 File Offset: 0x00120AC8 internal void Write(__BinaryWriter sout) { sout.WriteByte(21); sout.WriteInt32((int)this.messageEnum); IOUtil.WriteStringWithCode(this.methodName, sout); IOUtil.WriteStringWithCode(this.typeName, sout); if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInline)) { IOUtil.WriteStringWithCode((string)this.callContext, sout); } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInline)) { sout.WriteInt32(this.args.Length); for (int i = 0; i < this.args.Length; i++) { IOUtil.WriteWithCode(this.argTypes[i], this.args[i], sout); } } }
// Token: 0x060052C8 RID: 21192 RVA: 0x00122EBC File Offset: 0x001210BC public void Write(__BinaryWriter sout) { sout.WriteByte(22); sout.WriteInt32((int)this.messageEnum); if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ReturnValueInline)) { IOUtil.WriteWithCode(this.returnType, this.returnValue, sout); } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInline)) { IOUtil.WriteStringWithCode((string)this.callContext, sout); } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInline)) { sout.WriteInt32(this.args.Length); for (int i = 0; i < this.args.Length; i++) { IOUtil.WriteWithCode(this.argTypes[i], this.args[i], sout); } } }
private void DumpInternal() { if (!BCLDebug.CheckEnabled("BINARY")) { return; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInline)) { string str = this.callContext as string; } if (!IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInline)) { return; } int num = 0; while (num < this.args.Length) { ++num; } }
// Token: 0x060052C7 RID: 21191 RVA: 0x00122BFC File Offset: 0x00120DFC internal object[] WriteArray(object returnValue, object[] args, Exception exception, object callContext, object[] properties) { this.returnValue = returnValue; this.args = args; this.exception = exception; this.callContext = callContext; this.properties = properties; int num = 0; if (args == null || args.Length == 0) { this.messageEnum = MessageEnum.NoArgs; } else { this.argTypes = new Type[args.Length]; this.bArgsPrimitive = true; for (int i = 0; i < args.Length; i++) { if (args[i] != null) { this.argTypes[i] = args[i].GetType(); if (Converter.ToCode(this.argTypes[i]) <= InternalPrimitiveTypeE.Invalid && this.argTypes[i] != Converter.typeofString) { this.bArgsPrimitive = false; break; } } } if (this.bArgsPrimitive) { this.messageEnum = MessageEnum.ArgsInline; } else { num++; this.messageEnum = MessageEnum.ArgsInArray; } } if (returnValue == null) { this.messageEnum |= MessageEnum.NoReturnValue; } else if (returnValue.GetType() == typeof(void)) { this.messageEnum |= MessageEnum.ReturnValueVoid; } else { this.returnType = returnValue.GetType(); if (Converter.ToCode(this.returnType) > InternalPrimitiveTypeE.Invalid || this.returnType == Converter.typeofString) { this.messageEnum |= MessageEnum.ReturnValueInline; } else { num++; this.messageEnum |= MessageEnum.ReturnValueInArray; } } if (exception != null) { num++; this.messageEnum |= MessageEnum.ExceptionInArray; } if (callContext == null) { this.messageEnum |= MessageEnum.NoContext; } else if (callContext is string) { this.messageEnum |= MessageEnum.ContextInline; } else { num++; this.messageEnum |= MessageEnum.ContextInArray; } if (properties != null) { num++; this.messageEnum |= MessageEnum.PropertyInArray; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray) && num == 1) { this.messageEnum ^= MessageEnum.ArgsInArray; this.messageEnum |= MessageEnum.ArgsIsArray; return(args); } if (num > 0) { int num2 = 0; this.callA = new object[num]; if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray)) { this.callA[num2++] = args; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ReturnValueInArray)) { this.callA[num2++] = returnValue; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ExceptionInArray)) { this.callA[num2++] = exception; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInArray)) { this.callA[num2++] = callContext; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.PropertyInArray)) { this.callA[num2] = properties; } return(this.callA); } return(null); }
// Token: 0x060052BE RID: 21182 RVA: 0x00122664 File Offset: 0x00120864 internal object[] WriteArray(string uri, string methodName, string typeName, Type[] instArgs, object[] args, object methodSignature, object callContext, object[] properties) { this.uri = uri; this.methodName = methodName; this.typeName = typeName; this.instArgs = instArgs; this.args = args; this.methodSignature = methodSignature; this.callContext = callContext; this.properties = properties; int num = 0; if (args == null || args.Length == 0) { this.messageEnum = MessageEnum.NoArgs; } else { this.argTypes = new Type[args.Length]; this.bArgsPrimitive = true; for (int i = 0; i < args.Length; i++) { if (args[i] != null) { this.argTypes[i] = args[i].GetType(); if ((Converter.ToCode(this.argTypes[i]) <= InternalPrimitiveTypeE.Invalid && this.argTypes[i] != Converter.typeofString) || args[i] is ISerializable) { this.bArgsPrimitive = false; break; } } } if (this.bArgsPrimitive) { this.messageEnum = MessageEnum.ArgsInline; } else { num++; this.messageEnum = MessageEnum.ArgsInArray; } } if (instArgs != null) { num++; this.messageEnum |= MessageEnum.GenericMethod; } if (methodSignature != null) { num++; this.messageEnum |= MessageEnum.MethodSignatureInArray; } if (callContext == null) { this.messageEnum |= MessageEnum.NoContext; } else if (callContext is string) { this.messageEnum |= MessageEnum.ContextInline; } else { num++; this.messageEnum |= MessageEnum.ContextInArray; } if (properties != null) { num++; this.messageEnum |= MessageEnum.PropertyInArray; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray) && num == 1) { this.messageEnum ^= MessageEnum.ArgsInArray; this.messageEnum |= MessageEnum.ArgsIsArray; return(args); } if (num > 0) { int num2 = 0; this.callA = new object[num]; if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray)) { this.callA[num2++] = args; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.GenericMethod)) { this.callA[num2++] = instArgs; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.MethodSignatureInArray)) { this.callA[num2++] = methodSignature; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInArray)) { this.callA[num2++] = callContext; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.PropertyInArray)) { this.callA[num2] = properties; } return(this.callA); } return(null); }
internal object[] WriteArray(object returnValue, object[] args, Exception exception, object callContext, object[] properties) { this.returnValue = returnValue; this.args = args; this.exception = exception; this.callContext = callContext; this.properties = (object)properties; int length = 0; if (args == null || args.Length == 0) { this.messageEnum = MessageEnum.NoArgs; } else { this.argTypes = new Type[args.Length]; this.bArgsPrimitive = true; for (int index = 0; index < args.Length; ++index) { if (args[index] != null) { this.argTypes[index] = args[index].GetType(); if ((uint)Converter.ToCode(this.argTypes[index]) <= 0U && this.argTypes[index] != Converter.typeofString) { this.bArgsPrimitive = false; break; } } } if (this.bArgsPrimitive) { this.messageEnum = MessageEnum.ArgsInline; } else { ++length; this.messageEnum = MessageEnum.ArgsInArray; } } if (returnValue == null) { this.messageEnum = this.messageEnum | MessageEnum.NoReturnValue; } else if (returnValue.GetType() == typeof(void)) { this.messageEnum = this.messageEnum | MessageEnum.ReturnValueVoid; } else { this.returnType = returnValue.GetType(); if ((uint)Converter.ToCode(this.returnType) > 0U || this.returnType == Converter.typeofString) { this.messageEnum = this.messageEnum | MessageEnum.ReturnValueInline; } else { ++length; this.messageEnum = this.messageEnum | MessageEnum.ReturnValueInArray; } } if (exception != null) { ++length; this.messageEnum = this.messageEnum | MessageEnum.ExceptionInArray; } if (callContext == null) { this.messageEnum = this.messageEnum | MessageEnum.NoContext; } else if (callContext is string) { this.messageEnum = this.messageEnum | MessageEnum.ContextInline; } else { ++length; this.messageEnum = this.messageEnum | MessageEnum.ContextInArray; } if (properties != null) { ++length; this.messageEnum = this.messageEnum | MessageEnum.PropertyInArray; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray) && length == 1) { this.messageEnum = this.messageEnum ^ MessageEnum.ArgsInArray; this.messageEnum = this.messageEnum | MessageEnum.ArgsIsArray; return(args); } if (length <= 0) { return((object[])null); } int index1 = 0; this.callA = new object[length]; if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray)) { this.callA[index1++] = (object)args; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ReturnValueInArray)) { this.callA[index1++] = returnValue; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ExceptionInArray)) { this.callA[index1++] = (object)exception; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInArray)) { this.callA[index1++] = callContext; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.PropertyInArray)) { this.callA[index1] = (object)properties; } return(this.callA); }
internal object[] WriteArray(object returnValue, object[] args, Exception exception, object callContext, object[] properties) { this.returnValue = returnValue; this.args = args; this.exception = exception; this.callContext = callContext; this.properties = properties; int num = 0; if ((args == null) || (args.Length == 0)) { this.messageEnum = MessageEnum.NoArgs; } else { this.argTypes = new Type[args.Length]; this.bArgsPrimitive = true; for (int i = 0; i < args.Length; i++) { if (args[i] != null) { this.argTypes[i] = args[i].GetType(); if (!this.argTypes[i].IsPrimitive && !object.ReferenceEquals(this.argTypes[i], Converter.typeofString)) { this.bArgsPrimitive = false; break; } } } if (this.bArgsPrimitive) { this.messageEnum = MessageEnum.ArgsInline; } else { num++; this.messageEnum = MessageEnum.ArgsInArray; } } if (returnValue == null) { this.messageEnum |= MessageEnum.NoReturnValue; } else if (returnValue.GetType() == typeof(void)) { this.messageEnum |= MessageEnum.ReturnValueVoid; } else { this.returnType = returnValue.GetType(); if (this.returnType.IsPrimitive || object.ReferenceEquals(this.returnType, Converter.typeofString)) { this.messageEnum |= MessageEnum.ReturnValueInline; } else { num++; this.messageEnum |= MessageEnum.ReturnValueInArray; } } if (exception != null) { num++; this.messageEnum |= MessageEnum.ExceptionInArray; } if (callContext == null) { this.messageEnum |= MessageEnum.NoContext; } else if (callContext is string) { this.messageEnum |= MessageEnum.ContextInline; } else { num++; this.messageEnum |= MessageEnum.ContextInArray; } if (properties != null) { num++; this.messageEnum |= MessageEnum.PropertyInArray; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray) && (num == 1)) { this.messageEnum ^= MessageEnum.ArgsInArray; this.messageEnum |= MessageEnum.ArgsIsArray; return(args); } if (num <= 0) { return(null); } int index = 0; this.callA = new object[num]; if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray)) { this.callA[index++] = args; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ReturnValueInArray)) { this.callA[index++] = returnValue; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ExceptionInArray)) { this.callA[index++] = exception; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInArray)) { this.callA[index++] = callContext; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.PropertyInArray)) { this.callA[index] = properties; } return(this.callA); }
internal object[] WriteArray(string uri, string methodName, string typeName, Type[] instArgs, object[] args, object methodSignature, object callContext, object[] properties) { this.uri = uri; this.methodName = methodName; this.typeName = typeName; this.instArgs = instArgs; this.args = args; this.methodSignature = methodSignature; this.callContext = callContext; this.properties = (object)properties; int length = 0; if (args == null || args.Length == 0) { this.messageEnum = MessageEnum.NoArgs; } else { this.argTypes = new Type[args.Length]; this.bArgsPrimitive = true; for (int index = 0; index < args.Length; ++index) { if (args[index] != null) { this.argTypes[index] = args[index].GetType(); if ((uint)Converter.ToCode(this.argTypes[index]) <= 0U && this.argTypes[index] != Converter.typeofString || args[index] is ISerializable) { this.bArgsPrimitive = false; break; } } } if (this.bArgsPrimitive) { this.messageEnum = MessageEnum.ArgsInline; } else { ++length; this.messageEnum = MessageEnum.ArgsInArray; } } if (instArgs != null) { ++length; this.messageEnum = this.messageEnum | MessageEnum.GenericMethod; } if (methodSignature != null) { ++length; this.messageEnum = this.messageEnum | MessageEnum.MethodSignatureInArray; } if (callContext == null) { this.messageEnum = this.messageEnum | MessageEnum.NoContext; } else if (callContext is string) { this.messageEnum = this.messageEnum | MessageEnum.ContextInline; } else { ++length; this.messageEnum = this.messageEnum | MessageEnum.ContextInArray; } if (properties != null) { ++length; this.messageEnum = this.messageEnum | MessageEnum.PropertyInArray; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray) && length == 1) { this.messageEnum = this.messageEnum ^ MessageEnum.ArgsInArray; this.messageEnum = this.messageEnum | MessageEnum.ArgsIsArray; return(args); } if (length <= 0) { return((object[])null); } int index1 = 0; this.callA = new object[length]; if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ArgsInArray)) { this.callA[index1++] = (object)args; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.GenericMethod)) { this.callA[index1++] = (object)instArgs; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.MethodSignatureInArray)) { this.callA[index1++] = methodSignature; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.ContextInArray)) { this.callA[index1++] = callContext; } if (IOUtil.FlagTest(this.messageEnum, MessageEnum.PropertyInArray)) { this.callA[index1] = (object)properties; } return(this.callA); }