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()
{
await _taskManager.Stop(true).ConfigureAwait(false);
if (Config.EnableMultiserver)
ClientAPI.Token = null;
}
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));
private void OnLeftServer(Server 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)
=> 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)
=> 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 Dictionary<string, Region> _regions;
private Stopwatch _connectionStopwatch;
private bool _isProcessingReady;

internal Logger Logger { get; }

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

/// <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

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

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

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

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

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


Loading…
Cancel
Save