private async Task HandleConnectionAsync(GuildPlayer guildPlayer) { var writer = _pipe.Writer; var webSocket = guildPlayer.Socket; try { do { var memory = writer.GetMemory(BUFFER_SIZE); var receiveResult = await webSocket.ReceiveAsync(memory, CancellationToken.None); if (!receiveResult.EndOfMessage) { writer.Advance(receiveResult.Count); continue; } await writer.FlushAsync(); await guildPlayer.OnMessageAsync(_pipe.Reader); } while (webSocket.State == WebSocketState.Open); } catch (Exception exception) { _logger.LogCritical(exception, exception.StackTrace); await writer.CompleteAsync(exception); await guildPlayer.OnDisconnectedAsync(exception); } }
public async static Task AddGuild(PlayerContext context, Player player, Guild guild) { var playerGuild = new GuildPlayer { Player = player, PlayerId = player.PlayerId, GuildId = guild.Id, Guild = guild }; player.GuildPlayers.Append(playerGuild); await context.GuildPlayers.AddAsync(playerGuild); await context.SaveChangesAsync(); }
public static async Task AddGuildToPlayer(PlayerContext context, Guild guild, Player player) { var guildPlayer = new GuildPlayer { PlayerId = player.PlayerId, GuildId = guild.Id, Player = player, Guild = guild }; player.GuildPlayers.Add(guildPlayer); context.GuildPlayers.Add(guildPlayer); context.Update <Player> (player); await context.SaveChangesAsync(); }