private async UniTaskVoid HandleRequestDeleteCharacterRoutine(LiteNetLibMessageHandler messageHandler) { long connectionId = messageHandler.connectionId; RequestDeleteCharacterMessage message = messageHandler.ReadMessage <RequestDeleteCharacterMessage>(); ResponseDeleteCharacterMessage.Error error = ResponseDeleteCharacterMessage.Error.None; CentralUserPeerInfo userPeerInfo; if (!userPeers.TryGetValue(connectionId, out userPeerInfo)) { error = ResponseDeleteCharacterMessage.Error.NotLoggedin; } else { await DbServiceClient.DeleteCharacterAsync(new DeleteCharacterReq() { UserId = userPeerInfo.userId, CharacterId = message.characterId }); } ResponseDeleteCharacterMessage responseMessage = new ResponseDeleteCharacterMessage(); responseMessage.ackId = message.ackId; responseMessage.responseCode = error == ResponseDeleteCharacterMessage.Error.None ? AckResponseCode.Success : AckResponseCode.Error; responseMessage.error = error; ServerSendResponse(connectionId, MMOMessageTypes.ResponseDeleteCharacter, responseMessage); }
private IEnumerator HandleRequestDeleteCharacterRoutine(LiteNetLibMessageHandler messageHandler) { long connectionId = messageHandler.connectionId; RequestDeleteCharacterMessage message = messageHandler.ReadMessage <RequestDeleteCharacterMessage>(); ResponseDeleteCharacterMessage.Error error = ResponseDeleteCharacterMessage.Error.None; CentralUserPeerInfo userPeerInfo; if (!userPeers.TryGetValue(connectionId, out userPeerInfo)) { error = ResponseDeleteCharacterMessage.Error.NotLoggedin; } else { DeleteCharactersJob job = new DeleteCharactersJob(Database, userPeerInfo.userId, message.characterId); job.Start(); yield return(StartCoroutine(job.WaitFor())); } ResponseDeleteCharacterMessage responseMessage = new ResponseDeleteCharacterMessage(); responseMessage.ackId = message.ackId; responseMessage.responseCode = error == ResponseDeleteCharacterMessage.Error.None ? AckResponseCode.Success : AckResponseCode.Error; responseMessage.error = error; ServerSendPacket(connectionId, DeliveryMethod.ReliableOrdered, MMOMessageTypes.ResponseDeleteCharacter, responseMessage); }
protected async UniTaskVoid HandleRequestDeleteCharacter( RequestHandlerData requestHandler, RequestDeleteCharacterMessage request, RequestProceedResultDelegate <ResponseDeleteCharacterMessage> result) { long connectionId = requestHandler.ConnectionId; ResponseDeleteCharacterMessage.Error error = ResponseDeleteCharacterMessage.Error.None; CentralUserPeerInfo userPeerInfo; if (!userPeers.TryGetValue(connectionId, out userPeerInfo)) { error = ResponseDeleteCharacterMessage.Error.NotLoggedin; } else { await DbServiceClient.DeleteCharacterAsync(new DeleteCharacterReq() { UserId = userPeerInfo.userId, CharacterId = request.characterId }); } // Response result.Invoke( error == ResponseDeleteCharacterMessage.Error.None ? AckResponseCode.Success : AckResponseCode.Error, new ResponseDeleteCharacterMessage() { error = error, }); }