Increased connection timeout to 30s, added initial support for unavailable servers

This commit is contained in:
RogueException
2015-09-27 13:10:35 -03:00
parent d49542513c
commit 0cafcebdba
3 changed files with 16 additions and 11 deletions

View File

@@ -157,6 +157,8 @@ namespace Discord.API
public PresenceMemberInfo[] Presences; public PresenceMemberInfo[] Presences;
[JsonProperty("voice_states")] [JsonProperty("voice_states")]
public VoiceMemberInfo[] VoiceStates; public VoiceMemberInfo[] VoiceStates;
[JsonProperty("unavailable")]
public bool Unavailable;
} }
//Messages //Messages

View File

@@ -66,7 +66,7 @@ namespace Discord
_servers = new Servers(this, cacheLock); _servers = new Servers(this, cacheLock);
_users = new Users(this, cacheLock); _users = new Users(this, cacheLock);
this.Connected += (s,e) => _api.CancelToken = CancelToken; this.Connected += (s, e) => _api.CancelToken = CancelToken;
VoiceDisconnected += (s, e) => VoiceDisconnected += (s, e) =>
{ {
@@ -341,8 +341,11 @@ namespace Discord
_currentUser.Update(data.User); _currentUser.Update(data.User);
foreach (var model in data.Guilds) foreach (var model in data.Guilds)
{ {
var server = _servers.GetOrAdd(model.Id); if (!model.Unavailable)
server.Update(model); {
var server = _servers.GetOrAdd(model.Id);
server.Update(model);
}
} }
foreach (var model in data.PrivateChannels) foreach (var model in data.PrivateChannels)
{ {
@@ -351,9 +354,6 @@ namespace Discord
var channel = _channels.GetOrAdd(model.Id, null, user.Id); var channel = _channels.GetOrAdd(model.Id, null, user.Id);
channel.Update(model); channel.Update(model);
} }
/*foreach (var server in _servers)
_dataSocket.SendJoinVoice(server.Id, System.Linq.Enumerable.First(server.ChannelIds));*/
} }
break; break;
case "RESUMED": case "RESUMED":
@@ -363,9 +363,12 @@ namespace Discord
case "GUILD_CREATE": case "GUILD_CREATE":
{ {
var model = e.Payload.ToObject<GuildCreateEvent>(_serializer); var model = e.Payload.ToObject<GuildCreateEvent>(_serializer);
var server = _servers.GetOrAdd(model.Id); if (!model.Unavailable)
server.Update(model); {
RaiseServerCreated(server); var server = _servers.GetOrAdd(model.Id);
server.Update(model);
RaiseServerCreated(server);
}
} }
break; break;
case "GUILD_UPDATE": case "GUILD_UPDATE":
@@ -694,7 +697,7 @@ namespace Discord
} }
private async Task<IDiscordVoiceClient> CreateVoiceClient(string serverId) private async Task<IDiscordVoiceClient> CreateVoiceClient(string serverId)
{ {
if (!_config.EnableVoiceMultiserver) if (!_config.EnableVoiceMultiserver)
{ {
_voiceServerId = serverId; _voiceServerId = serverId;
return this; return this;

View File

@@ -19,7 +19,7 @@ namespace Discord
/// <summary> Max time in milliseconds to wait for DiscordClient to connect and initialize. </summary> /// <summary> Max time in milliseconds to wait for DiscordClient to connect and initialize. </summary>
public int ConnectionTimeout { get { return _connectionTimeout; } set { SetValue(ref _connectionTimeout, value); } } public int ConnectionTimeout { get { return _connectionTimeout; } set { SetValue(ref _connectionTimeout, value); } }
private int _connectionTimeout = 10000; private int _connectionTimeout = 30000;
/// <summary> Gets or sets the time (in milliseconds) to wait after an unexpected disconnect before reconnecting. </summary> /// <summary> Gets or sets the time (in milliseconds) to wait after an unexpected disconnect before reconnecting. </summary>
public int ReconnectDelay { get { return _reconnectDelay; } set { SetValue(ref _reconnectDelay, value); } } public int ReconnectDelay { get { return _reconnectDelay; } set { SetValue(ref _reconnectDelay, value); } }
private int _reconnectDelay = 1000; private int _reconnectDelay = 1000;