From 1a127eb6782500111bea257e2c1b4b046a39a067 Mon Sep 17 00:00:00 2001 From: RogueException Date: Tue, 8 Sep 2015 20:14:54 -0300 Subject: [PATCH] Cleaned up voice checks --- src/Discord.Net/DiscordClient.cs | 33 +++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index bd4ebfd10..c24df4ceb 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -583,27 +583,34 @@ namespace Discord } //Voice -#if !DNXCORE50 public Task JoinVoiceServer(string channelId) => JoinVoiceServer(_channels[channelId]); public async Task JoinVoiceServer(Channel channel) { CheckReady(); - if (!_config.EnableVoice) throw new InvalidOperationException("Voice is not enabled for this client."); + CheckVoice(); if (channel == null) throw new ArgumentNullException(nameof(channel)); await LeaveVoiceServer(); //_currentVoiceServerId = channel.ServerId; _webSocket.JoinVoice(channel); +#if !DNXCORE50 await _voiceWebSocket.BeginConnect(); +#else + await Task.CompletedTask; +#endif } public async Task LeaveVoiceServer() { CheckReady(); - if (!_config.EnableVoice) throw new InvalidOperationException("Voice is not enabled for this client."); + CheckVoice(); +#if !DNXCORE50 await _voiceWebSocket.DisconnectAsync(); +#else + await Task.CompletedTask; +#endif //if (_voiceWebSocket.CurrentVoiceServerId != null) _webSocket.LeaveVoice(); } @@ -615,35 +622,40 @@ namespace Discord public void SendVoicePCM(byte[] data, int count) { CheckReady(); - if (!_config.EnableVoice) throw new InvalidOperationException("Voice is not enabled for this client."); + CheckVoice(); if (count == 0) return; if (_isDebugMode) RaiseOnDebugMessage(DebugMessageType.VoiceOutput, $"Queued {count} bytes for voice output."); +#if !DNXCORE50 _voiceWebSocket.SendPCMFrame(data, count); +#endif } /// Clears the PCM buffer. public void ClearVoicePCM() { CheckReady(); - if (!_config.EnableVoice) throw new InvalidOperationException("Voice is not enabled for this client."); + CheckVoice(); if (_isDebugMode) RaiseOnDebugMessage(DebugMessageType.VoiceOutput, $"Cleared the voice buffer."); +#if !DNXCORE50 _voiceWebSocket.ClearPCMFrames(); +#endif } /// Returns a task that completes once the voice output buffer is empty. public async Task WaitVoice() { CheckReady(); - if (!_config.EnableVoice) throw new InvalidOperationException("Voice is not enabled for this client."); + CheckVoice(); +#if !DNXCORE50 _voiceWebSocket.Wait(); +#endif await TaskHelper.CompletedTask; } -#endif //Helpers private void CheckReady() @@ -653,6 +665,13 @@ namespace Discord else if (!_isConnected) throw new InvalidOperationException("The client is not currently connected to Discord"); } + private void CheckVoice() + { +#if !DNXCORE50 + if (!_config.EnableVoice) +#endif + throw new InvalidOperationException("Voice is not enabled for this client."); + } internal string CleanMessageText(string text) { text = _userRegex.Replace(text, _userRegexEvaluator);