Temp. moved built-ing event logging to Debug temporarily, improved login speed.
This commit is contained in:
@@ -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 ConcurrentDictionary<ulong, Server> _servers;
|
||||||
private readonly ConcurrentDictionary<ulong, Channel> _channels;
|
private ConcurrentDictionary<ulong, Channel> _channels;
|
||||||
private readonly ConcurrentDictionary<ulong, Channel> _privateChannels; //Key = RecipientId
|
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>();
|
//ConcurrentLevel = 2 (only REST and WebSocket can add/remove)
|
||||||
_channels = new ConcurrentDictionary<ulong, Channel>();
|
_servers = new ConcurrentDictionary<ulong, Server>(2, 0);
|
||||||
_privateChannels = new ConcurrentDictionary<ulong, Channel>();
|
_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;
|
ClientAPI.Token = token;
|
||||||
var request = new LoginRequest() { Email = email, Password = password };
|
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>();
|
for (int i = 0; i < data.Guilds.Length; i++)
|
||||||
foreach (var model in data.Guilds)
|
|
||||||
{
|
{
|
||||||
|
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.Debug($"GUILD_CREATE: {server.Path}");
|
||||||
if (data.Unavailable != false)
|
else
|
||||||
Logger.Info($"Server Created: {server.Name}");
|
Logger.Debug($"GUILD_AVAILABLE: {server.Path}");
|
||||||
else
|
|
||||||
Logger.Info($"Server Available: {server.Name}");
|
|
||||||
}
|
|
||||||
|
|
||||||
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.Debug($"GUILD_UPDATE: {server.Path}");
|
||||||
Logger.Info($"Server Updated: {server.Name}");
|
|
||||||
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.Debug($"GUILD_DELETE: {server.Path}");
|
||||||
if (data.Unavailable != true)
|
else
|
||||||
Logger.Info($"Server Destroyed: {server.Name}");
|
Logger.Debug($"GUILD_UNAVAILABLE: {server.Path}");
|
||||||
else
|
|
||||||
Logger.Info($"Server Unavailable: {server.Name}");
|
|
||||||
}
|
|
||||||
|
|
||||||
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.Debug($"CHANNEL_CREATE: {channel.Path}");
|
||||||
Logger.Info($"Channel Created: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
|
||||||
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.Debug($"CHANNEL_UPDATE: {channel.Path}");
|
||||||
Logger.Info($"Channel Updated: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
|
||||||
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.Debug($"CHANNEL_DELETE: {channel.Path}");
|
||||||
Logger.Info($"Channel Destroyed: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
|
||||||
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.Debug($"GUILD_MEMBER_ADD: {user.Path}");
|
||||||
Logger.Info($"User Joined: {server.Name}/{user.Name}");
|
|
||||||
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.Debug($"GUILD_MEMBER_UPDATE: {user.Path}");
|
||||||
Logger.Info($"User Updated: {server.Name}/{user.Name}");
|
|
||||||
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.Debug($"GUILD_MEMBER_REMOVE: {user.Path}");
|
||||||
Logger.Info($"User Left: {server.Name}/{user.Name}");
|
|
||||||
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.Debug($"GUILD_ROLE_CREATE: {role.Path}");
|
||||||
Logger.Info($"Role Created: {server.Name}/{role.Name}");
|
|
||||||
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.Debug($"GUILD_ROLE_UPDATE: {role.Path}");
|
||||||
Logger.Info($"Role Updated: {server.Name}/{role.Name}");
|
|
||||||
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.Debug($"GUILD_ROLE_DELETE: {role.Path}");
|
||||||
Logger.Info($"Role Deleted: {server.Name}/{role.Name}");
|
|
||||||
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.Debug($"GUILD_BAN_ADD: {user.Path}");
|
||||||
Logger.Info($"User Banned: {server.Name}/{user.Name}");
|
|
||||||
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.Debug($"GUILD_BAN_REMOVE: {user.Path}");
|
||||||
Logger.Info($"User Unbanned: {server.Name}/{user.Name}");
|
|
||||||
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.Debug($"MESSAGE_CREATE: {channel.Path} ({user.Name ?? "Unknown"})");
|
||||||
Logger.Verbose($"Message Received: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
|
||||||
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.Debug($"MESSAGE_UPDATE: {channel.Path} ({data.Author?.Username ?? "Unknown"})");
|
||||||
Logger.Verbose($"Message Update: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
|
||||||
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.Debug($"MESSAGE_DELETE: {channel.Path} ({msg.User?.Name ?? "Unknown"})");
|
||||||
Logger.Verbose($"Message Deleted: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
|
||||||
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.Debug($"USER_UPDATE");
|
||||||
Logger.Info("Profile Updated");
|
|
||||||
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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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)
|
if (!Client.Config.UsePermissionsCache) return;
|
||||||
return;
|
|
||||||
|
|
||||||
var perms = new ChannelPermissions();
|
var perms = new ChannelPermissions();
|
||||||
UpdatePermissions(user, ref perms);
|
UpdatePermissions(user, ref perms);
|
||||||
|
|||||||
@@ -46,9 +46,9 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly ConcurrentDictionary<ulong, Role> _roles;
|
private ConcurrentDictionary<ulong, Role> _roles;
|
||||||
private readonly ConcurrentDictionary<ulong, Member> _users;
|
private ConcurrentDictionary<ulong, Member> _users;
|
||||||
private readonly ConcurrentDictionary<ulong, Channel> _channels;
|
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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user