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) =>
{ {
@@ -340,10 +340,13 @@ namespace Discord
_currentUser = _users.GetOrAdd(data.User.Id); _currentUser = _users.GetOrAdd(data.User.Id);
_currentUser.Update(data.User); _currentUser.Update(data.User);
foreach (var model in data.Guilds) foreach (var model in data.Guilds)
{
if (!model.Unavailable)
{ {
var server = _servers.GetOrAdd(model.Id); var server = _servers.GetOrAdd(model.Id);
server.Update(model); server.Update(model);
} }
}
foreach (var model in data.PrivateChannels) foreach (var model in data.PrivateChannels)
{ {
var user = _users.GetOrAdd(model.Recipient.Id); var user = _users.GetOrAdd(model.Recipient.Id);
@@ -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,10 +363,13 @@ namespace Discord
case "GUILD_CREATE": case "GUILD_CREATE":
{ {
var model = e.Payload.ToObject<GuildCreateEvent>(_serializer); var model = e.Payload.ToObject<GuildCreateEvent>(_serializer);
if (!model.Unavailable)
{
var server = _servers.GetOrAdd(model.Id); var server = _servers.GetOrAdd(model.Id);
server.Update(model); server.Update(model);
RaiseServerCreated(server); RaiseServerCreated(server);
} }
}
break; break;
case "GUILD_UPDATE": case "GUILD_UPDATE":
{ {

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;