From 67595575264e4848de2676aab4465e81c715f374 Mon Sep 17 00:00:00 2001 From: Brandon Smith Date: Tue, 29 Sep 2015 16:44:03 -0300 Subject: [PATCH] Added logging to child voice clients --- src/Discord.Net/DiscordClient.cs | 8 ++++++-- src/Discord.Net/DiscordClientConfig.cs | 11 ++++++++--- src/Discord.Net/DiscordSimpleClient.cs | 14 +++++++++----- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index 77373b9fc..34e44a997 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -23,6 +23,7 @@ namespace Discord private readonly ConcurrentQueue _pendingMessages; private readonly ConcurrentDictionary _voiceClients; private bool _sentInitialLog; + private uint _nextVoiceClientId; /// Returns the current logged-in user. public User CurrentUser => _currentUser; @@ -713,11 +714,14 @@ namespace Discord var client = _voiceClients.GetOrAdd(serverId, _ => { var config = _config.Clone(); - config.LogLevel = (LogMessageSeverity)Math.Min((int)_config.LogLevel, (int)LogMessageSeverity.Warning); + config.LogLevel = _config.LogLevel;// (LogMessageSeverity)Math.Min((int)_config.LogLevel, (int)LogMessageSeverity.Warning); config.EnableVoiceMultiserver = false; + config.VoiceOnly = true; + config.VoiceClientId = unchecked(++_nextVoiceClientId); return new DiscordSimpleClient(config, serverId); }); - await client.Connect(_gateway, _token).ConfigureAwait(false); + client.LogMessage += (s, e) => RaiseOnLog(e.Severity, e.Source, $"(#{client.Config.VoiceClientId}) {e.Message}"); + await client.Connect(_gateway, _token).ConfigureAwait(false); return client; } diff --git a/src/Discord.Net/DiscordClientConfig.cs b/src/Discord.Net/DiscordClientConfig.cs index e459b2b46..8c9bfebc8 100644 --- a/src/Discord.Net/DiscordClientConfig.cs +++ b/src/Discord.Net/DiscordClientConfig.cs @@ -48,9 +48,6 @@ namespace Discord /// (Experimental) Enables the voice websocket and UDP client. This option requires the libsodium .dll or .so be in the local lib/ folder. public bool EnableVoiceEncryption { get { return _enableVoiceEncryption; } set { SetValue(ref _enableVoiceEncryption, value); } } private bool _enableVoiceEncryption = true; - /// (Experimental) Enables the client to be simultaneously connected to multiple channels at once (Discord still limits you to one channel per server). - public bool EnableVoiceMultiserver { get { return _enableVoiceMultiserver; } set { SetValue(ref _enableVoiceMultiserver, value); } } - private bool _enableVoiceMultiserver = false; #else internal DiscordVoiceMode VoiceMode => DiscordVoiceMode.Disabled; internal bool EnableVoiceEncryption => false; @@ -63,6 +60,14 @@ namespace Discord public bool TrackActivity { get { return _trackActivity; } set { SetValue(ref _trackActivity, value); } } private bool _trackActivity = true; + /// (Experimental) Enables the client to be simultaneously connected to multiple channels at once (Discord still limits you to one channel per server). + public bool EnableVoiceMultiserver { get { return _enableVoiceMultiserver; } set { SetValue(ref _enableVoiceMultiserver, value); } } + private bool _enableVoiceMultiserver = false; + internal bool VoiceOnly { get { return _voiceOnly; } set { SetValue(ref _voiceOnly, value); } } + private bool _voiceOnly; + internal uint VoiceClientId { get { return _voiceClientId; } set { SetValue(ref _voiceClientId, value); } } + private uint _voiceClientId; + //Lock private bool _isLocked; internal void Lock() { _isLocked = true; } diff --git a/src/Discord.Net/DiscordSimpleClient.cs b/src/Discord.Net/DiscordSimpleClient.cs index 3ff217595..c1393008d 100644 --- a/src/Discord.Net/DiscordSimpleClient.cs +++ b/src/Discord.Net/DiscordSimpleClient.cs @@ -61,7 +61,7 @@ namespace Discord _cancelToken = new CancellationToken(true); _disconnectedEvent = new ManualResetEvent(true); _connectedEvent = new ManualResetEventSlim(false); - + _dataSocket = CreateDataSocket(); if (_enableVoice) _voiceSocket = CreateVoiceSocket(); @@ -86,11 +86,15 @@ namespace Discord if (e.WasUnexpected) await socket.Reconnect(_token); }; - socket.LogMessage += (s, e) => RaiseOnLog(e.Severity, LogMessageSource.DataWebSocket, e.Message); - if (_config.LogLevel >= LogMessageSeverity.Info) + + if (!_config.VoiceOnly) { - socket.Connected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.DataWebSocket, "Connected"); - socket.Disconnected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.DataWebSocket, "Disconnected"); + socket.LogMessage += (s, e) => RaiseOnLog(e.Severity, LogMessageSource.DataWebSocket, e.Message); + if (_config.LogLevel >= LogMessageSeverity.Info) + { + socket.Connected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.DataWebSocket, "Connected"); + socket.Disconnected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.DataWebSocket, "Disconnected"); + } } socket.ReceivedEvent += (s, e) => OnReceivedEvent(e);