public async ValueTask HandleAsync(Msg msg, CancellationToken cancellationToken) { var query = GetPlayerRequest.Parser.ParseFrom(msg.Data); var playerReg = await m_PlayerService.GetAsync(new GetPlayerBySessionIdQuery { SessionId = query.SessionId }).ConfigureAwait(false); var reply = new GetPlayerResponse(); if (playerReg != null) { reply.Player = new PlayerInfo { SessionId = playerReg.SessionId, ConnectorId = playerReg.ConnectorId, Name = playerReg.Name }; await m_MessageQueueService.PublishAsync(msg.Reply, reply.ToByteArray()).ConfigureAwait(false); } else { reply.Player = null; await m_MessageQueueService.PublishAsync(msg.Reply, reply.ToByteArray()).ConfigureAwait(false); } }
public async ValueTask HandleAsync(Msg msg, CancellationToken cancellationToken) { var packet = QueuePacket.Parser.ParseFrom(msg.Data); m_Logger.LogInformation($"chat.player.list => Receive packet from {packet.SessionId}"); var playerInRoom = await m_GetRoomService .GetAsync(new GetRoomBySessionIdQuery { SessionId = packet.SessionId }).ConfigureAwait(false); if (string.IsNullOrEmpty(playerInRoom)) { return; } var fromPlayerInfo = await m_PlayerQueryService .QueryAsync(new PlayerInfoQuery { SessionIds = new[] { packet.SessionId } }) .FirstOrDefaultAsync() .ConfigureAwait(false); if (fromPlayerInfo?.SessionId != packet.SessionId) { return; } var responseSessionIds = m_RoomListService.QueryAsync(new RoomSessionsQuery { Room = playerInRoom }); var playersContent = new PlayerList { Room = playerInRoom }; var allPlayers = m_PlayerQueryService.QueryAsync(new PlayerInfoQuery { SessionIds = await responseSessionIds.ToArrayAsync().ConfigureAwait(false) }); playersContent.Players.AddRange(allPlayers.Select(player => player.Name).ToEnumerable()); var sendMsg = new SendPacket { Subject = "chat.player.list", Payload = playersContent.ToByteString() }; sendMsg.SessionIds.Add(packet.SessionId); await m_MessageQueueService.PublishAsync($"connect.send.{fromPlayerInfo.ConnectorId}", sendMsg.ToByteArray()); }
public async void LoadItens() { var itens = await _service.GetAsync(); foreach (var item in itens.data) { collection.Add(item); } }
public async Task DeleteAsync(INoteIdentity identity) { var connectedReminders = from item in await _noteReminderGetService.GetAsync() where item.LinkedNote.Id == identity.Id select item; foreach (var i in connectedReminders) { await _noteReminderDeleteService.DeleteAsync(new NoteReminderIdentityModel(i.Id)); } await _dataAccessor.DeleteAsync(identity); }
public async ValueTask HandleAsync(Msg msg, CancellationToken cancellationToken) { var request = GetRoomBySessionIdRequest.Parser.ParseFrom(msg.Data); var room = await m_GetRoomService .GetAsync(new GetRoomBySessionIdQuery { SessionId = request.SessionId }) .ConfigureAwait(false); var response = new GetRoomBySessionIdResponse { Room = room ?? string.Empty }; await m_MessageQueueService.PublishAsync( msg.Reply, response.ToByteArray()).ConfigureAwait(false); }
public async ValueTask HandleAsync(Msg msg, CancellationToken cancellationToken) { var packet = QueuePacket.Parser.ParseFrom(msg.Data); m_Logger.LogInformation($"Receive packet from {packet.SessionId}"); var content = ChatMessage.Parser.ParseFrom(packet.Payload); m_Logger.LogInformation($"Scope: {content.Scope}, Target: {content.Target}, Message: {content.Message}"); var fromPlayerInfo = await m_QueryPlayerService .GetAsync(new PlayerInfoQuery { SessionId = packet.SessionId }) .ConfigureAwait(false); if (fromPlayerInfo?.SessionId != packet.SessionId) { return; } var room = await m_GetRoomService.GetAsync(new GetRoomBySessionidQuery { SessionId = fromPlayerInfo.SessionId }).ConfigureAwait(false); if (string.IsNullOrEmpty(room)) { return; } var sendContent = new ChatMessage { Scope = content.Scope, From = fromPlayerInfo.Name, Message = content.Message }; var roomPlayers = m_RoomListService .QueryAsync(new ListPlayerQuery { Room = room }); switch (content.Scope) { case Scope.Room: var contentByteString = sendContent.ToByteString(); await foreach (var g in roomPlayers.GroupBy(player => player.ConnectorId)) { var sendMsg = new SendPacket { Subject = "chat.receive" }; sendMsg.SessionIds.AddRange(g.Select(player => player.SessionId).ToEnumerable()); sendMsg.Payload = contentByteString; await m_MessageQueueService.PublishAsync( $"connect.send.{g.Key}", sendMsg.ToByteArray()).ConfigureAwait(false); } break; case Scope.Person: var targetName = content.Target; var matchedPlayer = await roomPlayers .Where(player => player.SessionId != fromPlayerInfo.SessionId) .Where(player => player.Name.Equals(targetName, StringComparison.OrdinalIgnoreCase)) .FirstOrDefaultAsync() .ConfigureAwait(false); if (matchedPlayer != null) { sendContent.Target = matchedPlayer.Name; if (fromPlayerInfo.ConnectorId == matchedPlayer.ConnectorId) { var sendMsg = new SendPacket { Subject = "chat.receive" }; sendMsg.SessionIds.Add(matchedPlayer.SessionId); sendMsg.SessionIds.Add(fromPlayerInfo.SessionId); sendMsg.Payload = sendContent.ToByteString(); await m_MessageQueueService.PublishAsync( $"connect.send.{matchedPlayer.ConnectorId}", sendMsg.ToByteArray()).ConfigureAwait(false); } else { var sendMsg = new SendPacket { Subject = "chat.receive" }; sendMsg.Payload = sendContent.ToByteString(); sendMsg.SessionIds.Add(matchedPlayer.SessionId); await m_MessageQueueService.PublishAsync( $"connect.send.{matchedPlayer.ConnectorId}", sendMsg.ToByteArray()).ConfigureAwait(false); sendMsg.SessionIds.Clear(); sendMsg.SessionIds.Add(fromPlayerInfo.SessionId); await m_MessageQueueService.PublishAsync( $"connect.send.{fromPlayerInfo.ConnectorId}", sendMsg.ToByteArray()).ConfigureAwait(false); } } else { var sendMsg = new SendPacket { Subject = "chat.receive" }; sendMsg.SessionIds.Add(fromPlayerInfo.SessionId); sendContent.Target = fromPlayerInfo.Name; var notFoundPlayerContent = new ChatMessage { Scope = Scope.System, Message = $"Can't send message to {targetName}", From = "System", Target = fromPlayerInfo.Name }; sendMsg.Payload = notFoundPlayerContent.ToByteString(); await m_MessageQueueService.PublishAsync( $"connect.send.{fromPlayerInfo.ConnectorId}", sendMsg.ToByteArray()).ConfigureAwait(false); } break; } }