internal IPromise <Nothing> Dispatch(PlayerHandle client, Message eventMsg) { ARequest request = ARequest.Parse(client, this.server, eventMsg); if (request == null) { Log.Warning("Failed to parse request from {name}/{hash}/{address}: {msg_name} \"{msg_data}\"", client.Name, client.Stream.ConnectionHash, client.Stream.ConnectionEndpoint, eventMsg.name, eventMsg.DebugDescription()); return(Nothing.Resolved()); } if (!request.Validate(client, this.server)) { Log.Warning("Failed to validate request from {name}/{hash}/{address}: {msg_name} \"{msg_data}\"", client.Name, client.Stream.ConnectionHash, client.Stream.ConnectionEndpoint, eventMsg.name, eventMsg.DebugDescription()); return(Nothing.Resolved()); } Log.Verbose("<= {player}@{lobby} {event_description}", client.Digest, client.CurrentLobbyIdentifier, request.DebugDescription()); return(request.Process(client, this.server)); }