internal bool Dispatch(NetMessage message, NetConnection connection, MethodInfo method, object instance) { List <Type> paramTypes = RpcInfoCache.ParamTypes(method.Name); if (paramTypes.Count >= message.Parameters.Length) { return(false); } if (method.ReturnType == typeof(IEnumerator) || method.ReturnType == typeof(void)) { return(false); } ushort requestId = (ushort)message.Parameters[message.Parameters.Length - 1]; object[] culledParams = new object[paramTypes.Count]; for (int i = 0; i < paramTypes.Count; i++) { culledParams[i] = message.Parameters[i]; } message.Parameters = culledParams; object result = method.Invoke(instance, message.Parameters); connection.Send(NetMessage.Create((ushort)Cmd.RequestResponse, message.ViewId, new object[] { requestId, true, result }, true)); return(true); }
internal List <Type> ParamTypes(ushort id) { return(RpcInfoCache.ParamTypes(IdToName(id))); }