Browse Source

Several bugfixes

pull/42/head
RogueException 9 years ago
parent
commit
25f148d5a8
3 changed files with 34 additions and 17 deletions
  1. +0
    -2
      src/Discord.Net.Audio/AudioClient.cs
  2. +4
    -4
      src/Discord.Net/DiscordClient.Events.cs
  3. +30
    -11
      src/Discord.Net/DiscordClient.cs

+ 0
- 2
src/Discord.Net.Audio/AudioClient.cs View File

@@ -182,8 +182,6 @@ namespace Discord.Audio
public async Task Disconnect() public async Task Disconnect()
{ {
await _taskManager.Stop(true).ConfigureAwait(false); await _taskManager.Stop(true).ConfigureAwait(false);
if (Config.EnableMultiserver)
ClientAPI.Token = null;
} }
private async Task Cleanup() private async Task Cleanup()
{ {


+ 4
- 4
src/Discord.Net/DiscordClient.Events.cs View File

@@ -68,12 +68,12 @@ namespace Discord
=> OnEvent(JoinedServer, new ServerEventArgs(server)); => OnEvent(JoinedServer, new ServerEventArgs(server));
private void OnLeftServer(Server server) private void OnLeftServer(Server server)
=> OnEvent(LeftServer, new ServerEventArgs(server)); => OnEvent(LeftServer, new ServerEventArgs(server));
private void OnServerAvailable(Server server)
=> OnEvent(ServerAvailable, new ServerEventArgs(server));
/*private void OnServerAvailable(Server server)
=> OnEvent(ServerAvailable, new ServerEventArgs(server));*/
private void OnServerUpdated(Server before, Server after) private void OnServerUpdated(Server before, Server after)
=> OnEvent(ServerUpdated, new ServerUpdatedEventArgs(before, after)); => OnEvent(ServerUpdated, new ServerUpdatedEventArgs(before, after));
private void OnServerUnavailable(Server server)
=> OnEvent(ServerUnavailable, new ServerEventArgs(server));
/*private void OnServerUnavailable(Server server)
=> OnEvent(ServerUnavailable, new ServerEventArgs(server));*/


private void OnUserBanned(User user) private void OnUserBanned(User user)
=> OnEvent(UserBanned, new UserEventArgs(user)); => OnEvent(UserBanned, new UserEventArgs(user));


+ 30
- 11
src/Discord.Net/DiscordClient.cs View File

@@ -33,6 +33,7 @@ namespace Discord
private ConcurrentDictionary<ulong, Channel> _privateChannels; //Key = RecipientId private ConcurrentDictionary<ulong, Channel> _privateChannels; //Key = RecipientId
private Dictionary<string, Region> _regions; private Dictionary<string, Region> _regions;
private Stopwatch _connectionStopwatch; private Stopwatch _connectionStopwatch;
private bool _isProcessingReady;


internal Logger Logger { get; } internal Logger Logger { get; }


@@ -270,6 +271,7 @@ namespace Discord
SendStatus(); SendStatus();
OnReady(); OnReady();
} }
_isProcessingReady = false;
} }


/// <summary> Disconnects from the Discord server, canceling any pending requests. </summary> /// <summary> Disconnects from the Discord server, canceling any pending requests. </summary>
@@ -487,6 +489,7 @@ namespace Discord
//TODO: None of this is really threadsafe - should only replace the cache collections when they have been fully populated //TODO: None of this is really threadsafe - should only replace the cache collections when they have been fully populated


var data = e.Payload.ToObject<ReadyEvent>(Serializer); var data = e.Payload.ToObject<ReadyEvent>(Serializer);
_isProcessingReady = true;


int channelCount = 0; int channelCount = 0;
for (int i = 0; i < data.Guilds.Length; i++) for (int i = 0; i < data.Guilds.Length; i++)
@@ -543,8 +546,15 @@ namespace Discord
Logger.Info($"GUILD_AVAILABLE: {server.Path}"); Logger.Info($"GUILD_AVAILABLE: {server.Path}");


if (data.Unavailable != false) if (data.Unavailable != false)
OnJoinedServer(server);
OnServerAvailable(server);
{
if (data.IsLarge)
GatewaySocket.SendRequestMembers(new ulong[] { data.Id }, "", 0);
else
{
OnJoinedServer(server);
//OnServerAvailable(server);
}
}
} }
} }
break; break;
@@ -574,9 +584,9 @@ namespace Discord
else else
Logger.Info($"GUILD_UNAVAILABLE: {server.Path}"); Logger.Info($"GUILD_UNAVAILABLE: {server.Path}");


OnServerUnavailable(server);
if (data.Unavailable != true)
OnLeftServer(server);
//OnServerUnavailable(server);
//if (data.Unavailable != true)
OnLeftServer(server);
} }
else else
Logger.Warning("GUILD_DELETE referenced an unknown guild."); Logger.Warning("GUILD_DELETE referenced an unknown guild.");
@@ -708,14 +718,23 @@ namespace Discord


if (server.CurrentUserCount >= server.UserCount) //Finished downloading for there if (server.CurrentUserCount >= server.UserCount) //Finished downloading for there
{ {
bool isConnectComplete = true;
foreach (var server2 in _servers.Select(x => x.Value))
if (_isProcessingReady)
{
bool isConnectComplete = true;
foreach (var server2 in _servers.Select(x => x.Value))
{
if (server2.CurrentUserCount < server2.UserCount)
isConnectComplete = false;
}
if (isConnectComplete)
EndConnect();
}
else
{ {
if (server2.CurrentUserCount < server2.UserCount)
isConnectComplete = false;
//TODO: Need to store if a server is available or not
OnJoinedServer(server);
//OnServerAvailable(server);
} }
if (isConnectComplete)
EndConnect();
} }
} }
else else


Loading…
Cancel
Save