private async Task HandleNextRequest() { try { HttpListenerContext context = await listener.GetContextAsync(); HttpListenerRequest request = context.Request; if (request.Url.AbsolutePath != "/") { return; } Stream inputStream = request.InputStream; byte[] data; using (MemoryStream memoryStream = new MemoryStream()) { await inputStream.CopyToAsync(memoryStream); data = memoryStream.ToArray(); } inputStream.Close(); BattleRoyaleMatchModel matchModel = ZeroFormatterSerializer.Deserialize <BattleRoyaleMatchModel>(data); GameRoomValidationResult result = matchModelMessageHandler.Handle(matchModel); if (result != null) { if (result.ResultEnum != GameRoomValidationResultEnum.Ok) { Log.Error(result.ResultEnum); } byte[] responseData = ZeroFormatterSerializer.Serialize(result); context.Response.StatusCode = 200; context.Response.ContentLength64 = responseData.Length; await context.Response.OutputStream.WriteAsync(responseData, 0, responseData.Length); context.Response.OutputStream.Close(); } else { throw new Exception("Отправка пустого ответа гейм матчеру запрещена."); } } catch (Exception e) { Log.Error("Брошено исключение при обработке http запроса " + e.Message); } }
private static GameRoomValidationResult GetValidationResult(bool roomWithThisNumberDoesNotExist) { GameRoomValidationResult result = new GameRoomValidationResult(); if (roomWithThisNumberDoesNotExist) { result.ResultEnum = GameRoomValidationResultEnum.Ok; } else { result.ResultEnum = GameRoomValidationResultEnum.AlreadyHaveARoomWithThatNumber; } return(result); }
public GameRoomValidationResult Handle(BattleRoyaleMatchModel matchModel) { GameRoomValidationResult result = matchModelValidator.Validate(matchModel); if (result?.ResultEnum == GameRoomValidationResultEnum.Ok) { AddMatchToQueue(matchModel); } else { string errMessage = "От матчмейкера пришло сообщение о создании матча, но оно было " + $"отклонено. result?.ResultEnum = {result?.ResultEnum.ToString()}"; throw new Exception(errMessage); } return(result); }