//Only disconnects if is current a member of this server public async Task Leave(VirtualClient client) { using (await _connectionLock.LockAsync()) { if (CurrentClient == client) { CurrentClient = null; await Disconnect(); } } }
public async Task <IAudioClient> Join(Channel channel) { if (channel == null) { throw new ArgumentNullException(nameof(channel)); } var server = channel.Server; using (await _asyncLock.LockAsync().ConfigureAwait(false)) { if (Config.EnableMultiserver) { AudioClient client; if (!_voiceClients.TryGetValue(server.Id, out client)) { client = new AudioClient(Client, server, unchecked (++_nextClientId)); _voiceClients[server.Id] = client; await client.Connect().ConfigureAwait(false); /*voiceClient.VoiceSocket.FrameReceived += (s, e) => * { * OnFrameReceieved(e); * }; * voiceClient.VoiceSocket.UserIsSpeaking += (s, e) => * { * var user = server.GetUser(e.UserId); * OnUserIsSpeakingUpdated(user, e.IsSpeaking); * };*/ } await client.Join(channel).ConfigureAwait(false); return(client); } else { if (_defaultClient.Server != server) { await _defaultClient.Disconnect().ConfigureAwait(false); _defaultClient.VoiceSocket.Server = server; await _defaultClient.Connect().ConfigureAwait(false); } var client = new VirtualClient(_defaultClient, server); _currentClient = client; await client.Join(channel).ConfigureAwait(false); return(client); } } }
//Only disconnects if is current a member of this server public async Task Leave(VirtualClient client) { using (await _connectionLock.LockAsync().ConfigureAwait(false)) { if (CurrentClient == client) { CurrentClient = null; await Disconnect().ConfigureAwait(false); } } }
internal async Task<IAudioClient> Connect(Channel channel) { using (await _connectionLock.LockAsync()) { bool changeServer = channel.Server != VoiceSocket.Server; if (changeServer || CurrentClient == null) { await Disconnect().ConfigureAwait(false); CurrentClient = new VirtualClient(this); VoiceSocket.Server = channel.Server; } await Join(channel); return CurrentClient; } }
internal async Task <IAudioClient> Connect(Channel channel) { using (await _connectionLock.LockAsync()) { bool changeServer = channel.Server != VoiceSocket.Server; if (changeServer || CurrentClient == null) { await Disconnect().ConfigureAwait(false); CurrentClient = new VirtualClient(this); VoiceSocket.Server = channel.Server; } await Join(channel); return(CurrentClient); } }
public async Task<IAudioClient> Join(Channel channel) { if (channel == null) throw new ArgumentNullException(nameof(channel)); var server = channel.Server; using (await _asyncLock.LockAsync().ConfigureAwait(false)) { if (Config.EnableMultiserver) { AudioClient client; if (!_voiceClients.TryGetValue(server.Id, out client)) { client = new AudioClient(Client, server, unchecked(++_nextClientId)); _voiceClients[server.Id] = client; await client.Connect().ConfigureAwait(false); /*voiceClient.VoiceSocket.FrameReceived += (s, e) => { OnFrameReceieved(e); }; voiceClient.VoiceSocket.UserIsSpeaking += (s, e) => { var user = server.GetUser(e.UserId); OnUserIsSpeakingUpdated(user, e.IsSpeaking); };*/ } await client.Join(channel).ConfigureAwait(false); return client; } else { if (_defaultClient.Server != server) { await _defaultClient.Disconnect().ConfigureAwait(false); _defaultClient.VoiceSocket.Server = server; await _defaultClient.Connect().ConfigureAwait(false); } var client = new VirtualClient(_defaultClient, server); _currentClient = client; await client.Join(channel).ConfigureAwait(false); return client; } } }