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 TaskManager _taskManager;
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;

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

//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
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);
token = response.Token;
if (Config.CacheDir != null && token != oldToken && tokenPath != null)
@@ -475,15 +476,26 @@ namespace Discord
if (Config.LogLevel >= LogSeverity.Verbose)
stopwatch = Stopwatch.StartNew();
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;
PrivateUser = new User(this, data.User.Id, null);
PrivateUser.Update(data.User);
CurrentUser = new Profile(this, data.User.Id);
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)
{
var server = AddServer(model.Id);
@@ -492,13 +504,15 @@ namespace Discord
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);
channel.Update(model);
}
if (largeServers.Count > 0)
GatewaySocket.SendRequestMembers(largeServers, "", 0);

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

msg.Update(data);
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);
}
else
@@ -859,8 +855,7 @@ namespace Discord
var msg = channel.GetMessage(data.Id, data.Author?.Id);
var before = Config.EnablePreUpdateEvents ? msg.Clone() : null;
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);
}
else
@@ -874,8 +869,7 @@ namespace Discord
if (channel != null)
{
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);
}
else
@@ -908,9 +902,9 @@ namespace Discord

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

//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>
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;
/// <summary> Enables or disables the default event logger. </summary>
public bool LogEvents { get; set; } = true;

//WebSocket

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

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

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


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

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

_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)
_messages = new ConcurrentDictionary<ulong, Message>();
_messages = new ConcurrentDictionary<ulong, Message>(2, (int)(client.Config.MessageCacheSize * 1.05));
}

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

var perms = new ChannelPermissions();
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? _afkChannelId;
private int _userCount;
@@ -117,9 +117,6 @@ namespace Discord
Client = client;
Id = id;

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

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


Loading…
Cancel
Save