From 0cafcebdba9a740d326bfb6cbd99a449eea95001 Mon Sep 17 00:00:00 2001 From: RogueException Date: Sun, 27 Sep 2015 13:10:35 -0300 Subject: [PATCH] Increased connection timeout to 30s, added initial support for unavailable servers --- src/Discord.Net/API/Common.cs | 2 ++ src/Discord.Net/DiscordClient.cs | 23 +++++++++++++---------- src/Discord.Net/DiscordClientConfig.cs | 2 +- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/Discord.Net/API/Common.cs b/src/Discord.Net/API/Common.cs index 49962c8a2..843c58ffc 100644 --- a/src/Discord.Net/API/Common.cs +++ b/src/Discord.Net/API/Common.cs @@ -157,6 +157,8 @@ namespace Discord.API public PresenceMemberInfo[] Presences; [JsonProperty("voice_states")] public VoiceMemberInfo[] VoiceStates; + [JsonProperty("unavailable")] + public bool Unavailable; } //Messages diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index 2a61a5690..e7ef0a97f 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -66,7 +66,7 @@ namespace Discord _servers = new Servers(this, cacheLock); _users = new Users(this, cacheLock); - this.Connected += (s,e) => _api.CancelToken = CancelToken; + this.Connected += (s, e) => _api.CancelToken = CancelToken; VoiceDisconnected += (s, e) => { @@ -341,8 +341,11 @@ namespace Discord _currentUser.Update(data.User); foreach (var model in data.Guilds) { - var server = _servers.GetOrAdd(model.Id); - server.Update(model); + if (!model.Unavailable) + { + var server = _servers.GetOrAdd(model.Id); + server.Update(model); + } } foreach (var model in data.PrivateChannels) { @@ -351,9 +354,6 @@ namespace Discord var channel = _channels.GetOrAdd(model.Id, null, user.Id); channel.Update(model); } - - /*foreach (var server in _servers) - _dataSocket.SendJoinVoice(server.Id, System.Linq.Enumerable.First(server.ChannelIds));*/ } break; case "RESUMED": @@ -363,9 +363,12 @@ namespace Discord case "GUILD_CREATE": { var model = e.Payload.ToObject(_serializer); - var server = _servers.GetOrAdd(model.Id); - server.Update(model); - RaiseServerCreated(server); + if (!model.Unavailable) + { + var server = _servers.GetOrAdd(model.Id); + server.Update(model); + RaiseServerCreated(server); + } } break; case "GUILD_UPDATE": @@ -694,7 +697,7 @@ namespace Discord } private async Task CreateVoiceClient(string serverId) { - if (!_config.EnableVoiceMultiserver) + if (!_config.EnableVoiceMultiserver) { _voiceServerId = serverId; return this; diff --git a/src/Discord.Net/DiscordClientConfig.cs b/src/Discord.Net/DiscordClientConfig.cs index 422e1e022..e459b2b46 100644 --- a/src/Discord.Net/DiscordClientConfig.cs +++ b/src/Discord.Net/DiscordClientConfig.cs @@ -19,7 +19,7 @@ namespace Discord /// Max time in milliseconds to wait for DiscordClient to connect and initialize. public int ConnectionTimeout { get { return _connectionTimeout; } set { SetValue(ref _connectionTimeout, value); } } - private int _connectionTimeout = 10000; + private int _connectionTimeout = 30000; /// Gets or sets the time (in milliseconds) to wait after an unexpected disconnect before reconnecting. public int ReconnectDelay { get { return _reconnectDelay; } set { SetValue(ref _reconnectDelay, value); } } private int _reconnectDelay = 1000;