internal int VM_BeginInvokeMethod(long thread, long method, ValueImpl this_arg, ValueImpl[] arguments, InvokeFlags flags, InvokeMethodCallback callback, object state) { return Send (CommandSet.VM, (int)CmdVM.INVOKE_METHOD, new PacketWriter ().WriteId (thread).WriteInt ((int)flags).WriteId (method).WriteValue (this_arg).WriteInt (arguments.Length).WriteValues (arguments), delegate (PacketReader r) { ValueImpl v, exc, out_this = null; ValueImpl[] out_args = null; if (r.ErrorCode != 0) { callback (null, null, null, null, (ErrorCode)r.ErrorCode, state); } else { read_invoke_res (r, out v, out exc, out out_this, out out_args); callback (v, exc, out_this, out_args, 0, state); } }, 1); }
internal int VM_BeginInvokeMethods(long thread, long[] methods, ValueImpl this_arg, List<ValueImpl[]> arguments, InvokeFlags flags, InvokeMethodCallback callback, object state) { // FIXME: Merge this with INVOKE_METHOD var w = new PacketWriter (); w.WriteId (thread); w.WriteInt ((int)flags); w.WriteInt (methods.Length); for (int i = 0; i < methods.Length; ++i) { w.WriteId (methods [i]); w.WriteValue (this_arg); w.WriteInt (arguments [i].Length); w.WriteValues (arguments [i]); } return Send (CommandSet.VM, (int)CmdVM.INVOKE_METHODS, w, delegate (PacketReader r) { ValueImpl v, exc, out_this = null; ValueImpl[] out_args = null; if (r.ErrorCode != 0) { callback (null, null, null, null, (ErrorCode)r.ErrorCode, state); } else { read_invoke_res (r, out v, out exc, out out_this, out out_args); callback (v, exc, out_this, out_args, 0, state); } }, methods.Length); }
internal int VM_BeginInvokeMethod (long thread, long method, ValueImpl this_arg, ValueImpl[] arguments, InvokeFlags flags, InvokeMethodCallback callback, object state) { return Send (CommandSet.VM, (int)CmdVM.INVOKE_METHOD, new PacketWriter ().WriteId (thread).WriteInt ((int)flags).WriteId (method).WriteValue (this_arg).WriteInt (arguments.Length).WriteValues (arguments), delegate (PacketReader r) { ValueImpl v, exc; if (r.ErrorCode != 0) { callback (null, null, (ErrorCode)r.ErrorCode, state); } else { if (r.ReadByte () == 0) { exc = r.ReadValue (); v = null; } else { v = r.ReadValue (); exc = null; } callback (v, exc, 0, state); } }, 1); }