Browse Source

Temp. moved built-ing event logging to Debug temporarily, improved login speed.

tags/docs-0.9
RogueException 9 years ago
parent
commit
bd9fc36720
4 changed files with 74 additions and 78 deletions
  1. +57
    -62
      src/Discord.Net/DiscordClient.cs
  2. +1
    -5
      src/Discord.Net/DiscordConfig.cs
  3. +10
    -5
      src/Discord.Net/Models/Channel.cs
  4. +6
    -6
      src/Discord.Net/Models/Server.cs

+ 57
- 62
src/Discord.Net/DiscordClient.cs View File

@@ -28,9 +28,9 @@ namespace Discord
private readonly ManualResetEventSlim _connectedEvent; private readonly ManualResetEventSlim _connectedEvent;
private readonly TaskManager _taskManager; private readonly TaskManager _taskManager;
private readonly ServiceCollection _services; private readonly ServiceCollection _services;
private readonly ConcurrentDictionary<ulong, Server> _servers;
private readonly ConcurrentDictionary<ulong, Channel> _channels;
private readonly ConcurrentDictionary<ulong, Channel> _privateChannels; //Key = RecipientId
private ConcurrentDictionary<ulong, Server> _servers;
private ConcurrentDictionary<ulong, Channel> _channels;
private ConcurrentDictionary<ulong, Channel> _privateChannels; //Key = RecipientId
private Dictionary<string, Region> _regions; private Dictionary<string, Region> _regions;


internal Logger Logger { get; } internal Logger Logger { get; }
@@ -118,9 +118,10 @@ namespace Discord
CancelToken = new CancellationToken(true); CancelToken = new CancellationToken(true);


//Cache //Cache
_servers = new ConcurrentDictionary<ulong, Server>();
_channels = new ConcurrentDictionary<ulong, Channel>();
_privateChannels = new ConcurrentDictionary<ulong, Channel>();
//ConcurrentLevel = 2 (only REST and WebSocket can add/remove)
_servers = new ConcurrentDictionary<ulong, Server>(2, 0);
_channels = new ConcurrentDictionary<ulong, Channel>(2, 0);
_privateChannels = new ConcurrentDictionary<ulong, Channel>(2, 0);


//Serialization //Serialization
Serializer = new JsonSerializer(); Serializer = new JsonSerializer();
@@ -237,8 +238,8 @@ namespace Discord
} }
} }


ClientAPI.Token = token;
var request = new LoginRequest() { Email = email, Password = password };
ClientAPI.Token = token;
var request = new LoginRequest();// { Email = email, Password = password };
var response = await ClientAPI.Send(request).ConfigureAwait(false); var response = await ClientAPI.Send(request).ConfigureAwait(false);
token = response.Token; token = response.Token;
if (Config.CacheDir != null && token != oldToken && tokenPath != null) if (Config.CacheDir != null && token != oldToken && tokenPath != null)
@@ -475,15 +476,26 @@ namespace Discord
if (Config.LogLevel >= LogSeverity.Verbose) if (Config.LogLevel >= LogSeverity.Verbose)
stopwatch = Stopwatch.StartNew(); stopwatch = Stopwatch.StartNew();
var data = e.Payload.ToObject<ReadyEvent>(Serializer); var data = e.Payload.ToObject<ReadyEvent>(Serializer);

int channelCount = 0;
for (int i = 0; i < data.Guilds.Length; i++)
channelCount += data.Guilds[i].Channels.Length;

//ConcurrencyLevel = 2 (only REST and WebSocket can add/remove)
_servers = new ConcurrentDictionary<ulong, Server>(2, (int)(data.Guilds.Length * 1.05));
_channels = new ConcurrentDictionary<ulong, Channel>(2, (int)(channelCount * 1.05));
_privateChannels = new ConcurrentDictionary<ulong, Channel>(2, (int)(data.PrivateChannels.Length * 1.05));
List<ulong> largeServers = new List<ulong>();

SessionId = data.SessionId; SessionId = data.SessionId;
PrivateUser = new User(this, data.User.Id, null); PrivateUser = new User(this, data.User.Id, null);
PrivateUser.Update(data.User); PrivateUser.Update(data.User);
CurrentUser = new Profile(this, data.User.Id); CurrentUser = new Profile(this, data.User.Id);
CurrentUser.Update(data.User); CurrentUser.Update(data.User);


List<ulong> largeServers = new List<ulong>();
foreach (var model in data.Guilds)
for (int i = 0; i < data.Guilds.Length; i++)
{ {
var model = data.Guilds[i];
if (model.Unavailable != true) if (model.Unavailable != true)
{ {
var server = AddServer(model.Id); var server = AddServer(model.Id);
@@ -492,13 +504,15 @@ namespace Discord
largeServers.Add(server.Id); largeServers.Add(server.Id);
} }
} }
foreach (var model in data.PrivateChannels)
for (int i = 0; i < data.PrivateChannels.Length; i++)
{ {
var model = data.PrivateChannels[i];
var channel = AddPrivateChannel(model.Id, model.Recipient.Id); var channel = AddPrivateChannel(model.Id, model.Recipient.Id);
channel.Update(model); channel.Update(model);
} }
if (largeServers.Count > 0) if (largeServers.Count > 0)
GatewaySocket.SendRequestMembers(largeServers, "", 0); GatewaySocket.SendRequestMembers(largeServers, "", 0);

if (Config.LogLevel >= LogSeverity.Verbose) if (Config.LogLevel >= LogSeverity.Verbose)
{ {
stopwatch.Stop(); stopwatch.Stop();
@@ -516,14 +530,11 @@ namespace Discord
{ {
var server = AddServer(data.Id); var server = AddServer(data.Id);
server.Update(data); server.Update(data);

if (Config.LogEvents)
{
if (data.Unavailable != false)
Logger.Info($"Server Created: {server.Name}");
else
Logger.Info($"Server Available: {server.Name}");
}
if (data.Unavailable != false)
Logger.Debug($"GUILD_CREATE: {server.Path}");
else
Logger.Debug($"GUILD_AVAILABLE: {server.Path}");


if (data.Unavailable != false) if (data.Unavailable != false)
OnJoinedServer(server); OnJoinedServer(server);
@@ -539,8 +550,7 @@ namespace Discord
{ {
var before = Config.EnablePreUpdateEvents ? server.Clone() : null; var before = Config.EnablePreUpdateEvents ? server.Clone() : null;
server.Update(data); server.Update(data);
if (Config.LogEvents)
Logger.Info($"Server Updated: {server.Name}");
Logger.Debug($"GUILD_UPDATE: {server.Path}");
OnServerUpdated(before, server); OnServerUpdated(before, server);
} }
else else
@@ -553,13 +563,10 @@ namespace Discord
Server server = RemoveServer(data.Id); Server server = RemoveServer(data.Id);
if (server != null) if (server != null)
{ {
if (Config.LogEvents)
{
if (data.Unavailable != true)
Logger.Info($"Server Destroyed: {server.Name}");
else
Logger.Info($"Server Unavailable: {server.Name}");
}
if (data.Unavailable != true)
Logger.Debug($"GUILD_DELETE: {server.Path}");
else
Logger.Debug($"GUILD_UNAVAILABLE: {server.Path}");


OnServerUnavailable(server); OnServerUnavailable(server);
if (data.Unavailable != true) if (data.Unavailable != true)
@@ -589,8 +596,7 @@ namespace Discord
if (channel != null) if (channel != null)
{ {
channel.Update(data); channel.Update(data);
if (Config.LogEvents)
Logger.Info($"Channel Created: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
Logger.Debug($"CHANNEL_CREATE: {channel.Path}");
OnChannelCreated(channel); OnChannelCreated(channel);
} }
} }
@@ -603,8 +609,7 @@ namespace Discord
{ {
var before = Config.EnablePreUpdateEvents ? channel.Clone() : null; var before = Config.EnablePreUpdateEvents ? channel.Clone() : null;
channel.Update(data); channel.Update(data);
if (Config.LogEvents)
Logger.Info($"Channel Updated: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
Logger.Debug($"CHANNEL_UPDATE: {channel.Path}");
OnChannelUpdated(before, channel); OnChannelUpdated(before, channel);
} }
else else
@@ -617,8 +622,7 @@ namespace Discord
var channel = RemoveChannel(data.Id); var channel = RemoveChannel(data.Id);
if (channel != null) if (channel != null)
{ {
if (Config.LogEvents)
Logger.Info($"Channel Destroyed: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
Logger.Debug($"CHANNEL_DELETE: {channel.Path}");
OnChannelDestroyed(channel); OnChannelDestroyed(channel);
} }
else else
@@ -636,8 +640,7 @@ namespace Discord
var user = server.AddUser(data.User.Id); var user = server.AddUser(data.User.Id);
user.Update(data); user.Update(data);
user.UpdateActivity(); user.UpdateActivity();
if (Config.LogEvents)
Logger.Info($"User Joined: {server.Name}/{user.Name}");
Logger.Debug($"GUILD_MEMBER_ADD: {user.Path}");
OnUserJoined(user); OnUserJoined(user);
} }
else else
@@ -655,8 +658,7 @@ namespace Discord
{ {
var before = Config.EnablePreUpdateEvents ? user.Clone() : null; var before = Config.EnablePreUpdateEvents ? user.Clone() : null;
user.Update(data); user.Update(data);
if (Config.LogEvents)
Logger.Info($"User Updated: {server.Name}/{user.Name}");
Logger.Debug($"GUILD_MEMBER_UPDATE: {user.Path}");
OnUserUpdated(before, user); OnUserUpdated(before, user);
} }
else else
@@ -675,8 +677,7 @@ namespace Discord
var user = server.RemoveUser(data.User.Id); var user = server.RemoveUser(data.User.Id);
if (user != null) if (user != null)
{ {
if (Config.LogEvents)
Logger.Info($"User Left: {server.Name}/{user.Name}");
Logger.Debug($"GUILD_MEMBER_REMOVE: {user.Path}");
OnUserLeft(user); OnUserLeft(user);
} }
else else
@@ -698,6 +699,7 @@ namespace Discord
user.Update(memberData); user.Update(memberData);
//OnUserAdded(user); //OnUserAdded(user);
} }
Logger.Debug($"GUILD_MEMBERS_CHUNK: {data.Members.Length} users");
} }
else else
Logger.Warning("GUILD_MEMBERS_CHUNK referenced an unknown guild."); Logger.Warning("GUILD_MEMBERS_CHUNK referenced an unknown guild.");
@@ -713,8 +715,7 @@ namespace Discord
{ {
var role = server.AddRole(data.Data.Id); var role = server.AddRole(data.Data.Id);
role.Update(data.Data); role.Update(data.Data);
if (Config.LogEvents)
Logger.Info($"Role Created: {server.Name}/{role.Name}");
Logger.Debug($"GUILD_ROLE_CREATE: {role.Path}");
OnRoleCreated(role); OnRoleCreated(role);
} }
else else
@@ -732,8 +733,7 @@ namespace Discord
{ {
var before = Config.EnablePreUpdateEvents ? role.Clone() : null; var before = Config.EnablePreUpdateEvents ? role.Clone() : null;
role.Update(data.Data); role.Update(data.Data);
if (Config.LogEvents)
Logger.Info($"Role Updated: {server.Name}/{role.Name}");
Logger.Debug($"GUILD_ROLE_UPDATE: {role.Path}");
OnRoleUpdated(before, role); OnRoleUpdated(before, role);
} }
else else
@@ -752,8 +752,7 @@ namespace Discord
var role = server.RemoveRole(data.RoleId); var role = server.RemoveRole(data.RoleId);
if (role != null) if (role != null)
{ {
if (Config.LogEvents)
Logger.Info($"Role Deleted: {server.Name}/{role.Name}");
Logger.Debug($"GUILD_ROLE_DELETE: {role.Path}");
OnRoleDeleted(role); OnRoleDeleted(role);
} }
else else
@@ -774,8 +773,7 @@ namespace Discord
var user = server.GetUser(data.User.Id); var user = server.GetUser(data.User.Id);
if (user != null) if (user != null)
{ {
if (Config.LogEvents)
Logger.Info($"User Banned: {server.Name}/{user.Name}");
Logger.Debug($"GUILD_BAN_ADD: {user.Path}");
OnUserBanned(user); OnUserBanned(user);
} }
else else
@@ -793,8 +791,7 @@ namespace Discord
{ {
var user = new User(this, data.User.Id, server); var user = new User(this, data.User.Id, server);
user.Update(data.User); user.Update(data.User);
if (Config.LogEvents)
Logger.Info($"User Unbanned: {server.Name}/{user.Name}");
Logger.Debug($"GUILD_BAN_REMOVE: {user.Path}");
OnUserUnbanned(user); OnUserUnbanned(user);
} }
else else
@@ -838,9 +835,8 @@ namespace Discord


msg.Update(data); msg.Update(data);
user.UpdateActivity(); user.UpdateActivity();

if (Config.LogEvents)
Logger.Verbose($"Message Received: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
Logger.Debug($"MESSAGE_CREATE: {channel.Path} ({user.Name ?? "Unknown"})");
OnMessageReceived(msg); OnMessageReceived(msg);
} }
else else
@@ -859,8 +855,7 @@ namespace Discord
var msg = channel.GetMessage(data.Id, data.Author?.Id); var msg = channel.GetMessage(data.Id, data.Author?.Id);
var before = Config.EnablePreUpdateEvents ? msg.Clone() : null; var before = Config.EnablePreUpdateEvents ? msg.Clone() : null;
msg.Update(data); msg.Update(data);
if (Config.LogEvents)
Logger.Verbose($"Message Update: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
Logger.Debug($"MESSAGE_UPDATE: {channel.Path} ({data.Author?.Username ?? "Unknown"})");
OnMessageUpdated(before, msg); OnMessageUpdated(before, msg);
} }
else else
@@ -874,8 +869,7 @@ namespace Discord
if (channel != null) if (channel != null)
{ {
var msg = channel.RemoveMessage(data.Id); var msg = channel.RemoveMessage(data.Id);
if (Config.LogEvents)
Logger.Verbose($"Message Deleted: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
Logger.Debug($"MESSAGE_DELETE: {channel.Path} ({msg.User?.Name ?? "Unknown"})");
OnMessageDeleted(msg); OnMessageDeleted(msg);
} }
else else
@@ -908,9 +902,9 @@ namespace Discord


if (user != null) if (user != null)
{ {
Logger.Debug($"PRESENCE_UPDATE: {user.Path}");
var before = Config.EnablePreUpdateEvents ? user.Clone() : null; var before = Config.EnablePreUpdateEvents ? user.Clone() : null;
user.Update(data); user.Update(data);
//Logger.Verbose($"Presence Updated: {server.Name}/{user.Name}");
OnUserUpdated(before, user); OnUserUpdated(before, user);
} }
/*else //Occurs when a user leaves a server /*else //Occurs when a user leaves a server
@@ -929,13 +923,13 @@ namespace Discord
if (channel.Recipient.Id == data.UserId) if (channel.Recipient.Id == data.UserId)
user = channel.Recipient; user = channel.Recipient;
else else
return; ;
break;
} }
else else
user = channel.Server.GetUser(data.UserId); user = channel.Server.GetUser(data.UserId);
if (user != null) if (user != null)
{ {
//Logger.Verbose($"Is Typing: {channel.Server?.Name ?? "[Private]"}/{channel.Name}/{user.Name}");
Logger.Debug($"TYPING_START: {channel.Path} ({user.Name})");
OnUserIsTypingUpdated(channel, user); OnUserIsTypingUpdated(channel, user);
user.UpdateActivity(); user.UpdateActivity();
} }
@@ -955,6 +949,7 @@ namespace Discord
var user = server.GetUser(data.UserId); var user = server.GetUser(data.UserId);
if (user != null) if (user != null)
{ {
Logger.Debug($"VOICE_STATE_UPDATE: {user.Path}");
var before = Config.EnablePreUpdateEvents ? user.Clone() : null; var before = Config.EnablePreUpdateEvents ? user.Clone() : null;
user.Update(data); user.Update(data);
//Logger.Verbose($"Voice Updated: {server.Name}/{user.Name}"); //Logger.Verbose($"Voice Updated: {server.Name}/{user.Name}");
@@ -979,8 +974,7 @@ namespace Discord
PrivateUser.Update(data); PrivateUser.Update(data);
foreach (var server in _servers) foreach (var server in _servers)
server.Value.CurrentUser.Update(data); server.Value.CurrentUser.Update(data);
if (Config.LogEvents)
Logger.Info("Profile Updated");
Logger.Debug($"USER_UPDATE");
OnProfileUpdated(before, CurrentUser); OnProfileUpdated(before, CurrentUser);
} }
} }
@@ -996,6 +990,7 @@ namespace Discord
case "VOICE_SERVER_UPDATE": case "VOICE_SERVER_UPDATE":
case "GUILD_EMOJIS_UPDATE": case "GUILD_EMOJIS_UPDATE":
case "MESSAGE_ACK": case "MESSAGE_ACK":
Logger.Debug($"{e.Type} [Ignored]");
break; break;


//Others //Others


+ 1
- 5
src/Discord.Net/DiscordConfig.cs View File

@@ -16,10 +16,8 @@ namespace Discord
/// <summary> Gets or sets the version of your application, used in the user agent. </summary> /// <summary> Gets or sets the version of your application, used in the user agent. </summary>
public string AppVersion { get; set; } = null; public string AppVersion { get; set; } = null;


/// <summary> Gets or sets the minimum log level severity that will be sent to the LogMessage event. Warning: setting this to debug will really hurt performance but should help investigate any internal issues. </summary>
/// <summary> Gets or sets the minimum log level severity that will be sent to the LogMessage event. </summary>
public LogSeverity LogLevel { get; set; } = LogSeverity.Info; public LogSeverity LogLevel { get; set; } = LogSeverity.Info;
/// <summary> Enables or disables the default event logger. </summary>
public bool LogEvents { get; set; } = true;


//WebSocket //WebSocket


@@ -66,7 +64,6 @@ namespace Discord
public const string InviteUrl = "https://discord.gg/"; public const string InviteUrl = "https://discord.gg/";


public LogSeverity LogLevel { get; } public LogSeverity LogLevel { get; }
public bool LogEvents { get; }
public int ConnectionTimeout { get; } public int ConnectionTimeout { get; }
public int ReconnectDelay { get; } public int ReconnectDelay { get; }
@@ -83,7 +80,6 @@ namespace Discord
internal DiscordConfig(DiscordConfigBuilder builder) internal DiscordConfig(DiscordConfigBuilder builder)
{ {
LogLevel = builder.LogLevel; LogLevel = builder.LogLevel;
LogEvents = builder.LogEvents;


ConnectionTimeout = builder.ConnectionTimeout; ConnectionTimeout = builder.ConnectionTimeout;
ReconnectDelay = builder.ReconnectDelay; ReconnectDelay = builder.ReconnectDelay;


+ 10
- 5
src/Discord.Net/Models/Channel.cs View File

@@ -111,7 +111,7 @@ namespace Discord
: this(client, id) : this(client, id)
{ {
Server = server; Server = server;
if (server != null)
if (server != null && Client.Config.UsePermissionsCache)
{ {
foreach (var user in server.Users) foreach (var user in server.Users)
AddUser(user); AddUser(user);
@@ -131,9 +131,15 @@ namespace Discord
Id = id; Id = id;


_permissionOverwrites = new Dictionary<ulong, PermissionOverwrite>(); _permissionOverwrites = new Dictionary<ulong, PermissionOverwrite>();
_users = new ConcurrentDictionary<ulong, Member>();
if (client.Config.UsePermissionsCache)
{
if (IsPrivate)
_users = new ConcurrentDictionary<ulong, Member>(2, 2);
else
_users = new ConcurrentDictionary<ulong, Member>(2, (int)(Server.UserCount * 1.05));
}
if (client.Config.MessageCacheSize > 0) if (client.Config.MessageCacheSize > 0)
_messages = new ConcurrentDictionary<ulong, Message>();
_messages = new ConcurrentDictionary<ulong, Message>(2, (int)(client.Config.MessageCacheSize * 1.05));
} }


internal void Update(ChannelReference model) internal void Update(ChannelReference model)
@@ -542,8 +548,7 @@ namespace Discord
#region Users #region Users
internal void AddUser(User user) internal void AddUser(User user)
{ {
if (!Client.Config.UsePermissionsCache)
return;
if (!Client.Config.UsePermissionsCache) return;


var perms = new ChannelPermissions(); var perms = new ChannelPermissions();
UpdatePermissions(user, ref perms); UpdatePermissions(user, ref perms);


+ 6
- 6
src/Discord.Net/Models/Server.cs View File

@@ -46,9 +46,9 @@ namespace Discord
} }
} }


private readonly ConcurrentDictionary<ulong, Role> _roles;
private readonly ConcurrentDictionary<ulong, Member> _users;
private readonly ConcurrentDictionary<ulong, Channel> _channels;
private ConcurrentDictionary<ulong, Role> _roles;
private ConcurrentDictionary<ulong, Member> _users;
private ConcurrentDictionary<ulong, Channel> _channels;
private ulong _ownerId; private ulong _ownerId;
private ulong? _afkChannelId; private ulong? _afkChannelId;
private int _userCount; private int _userCount;
@@ -117,9 +117,6 @@ namespace Discord
Client = client; Client = client;
Id = id; Id = id;


_channels = new ConcurrentDictionary<ulong, Channel>();
_roles = new ConcurrentDictionary<ulong, Role>();
_users = new ConcurrentDictionary<ulong, Member>();
DefaultChannel = AddChannel(id); DefaultChannel = AddChannel(id);
EveryoneRole = AddRole(id); EveryoneRole = AddRole(id);
} }
@@ -157,6 +154,7 @@ namespace Discord
} }
if (model.Roles != null) if (model.Roles != null)
{ {
_roles = new ConcurrentDictionary<ulong, Role>(2, model.Roles.Length);
foreach (var x in model.Roles) foreach (var x in model.Roles)
AddRole(x.Id).Update(x); AddRole(x.Id).Update(x);
} }
@@ -171,11 +169,13 @@ namespace Discord


if (model.Channels != null) if (model.Channels != null)
{ {
_channels = new ConcurrentDictionary<ulong, Channel>(2, (int)(model.Channels.Length * 1.05));
foreach (var subModel in model.Channels) foreach (var subModel in model.Channels)
AddChannel(subModel.Id).Update(subModel); AddChannel(subModel.Id).Update(subModel);
} }
if (model.Members != null) if (model.Members != null)
{ {
_users = new ConcurrentDictionary<ulong, Member>(2, (int)(model.Members.Length * 1.05));
foreach (var subModel in model.Members) foreach (var subModel in model.Members)
AddUser(subModel.User.Id).Update(subModel); AddUser(subModel.User.Id).Update(subModel);
} }


Loading…
Cancel
Save