@@ -190,6 +190,7 @@ namespace Discord.WebSocket | |||||
{ | { | ||||
WebSocketProvider = DefaultWebSocketProvider.Instance; | WebSocketProvider = DefaultWebSocketProvider.Instance; | ||||
UdpSocketProvider = DefaultUdpSocketProvider.Instance; | UdpSocketProvider = DefaultUdpSocketProvider.Instance; | ||||
MessageCache = new MessageCache(); | |||||
} | } | ||||
internal DiscordSocketConfig Clone() => MemberwiseClone() as DiscordSocketConfig; | internal DiscordSocketConfig Clone() => MemberwiseClone() as DiscordSocketConfig; | ||||
@@ -36,7 +36,7 @@ namespace Discord.WebSocket | |||||
{ | { | ||||
Recipient = recipient; | Recipient = recipient; | ||||
recipient.GlobalUser.AddRef(); | recipient.GlobalUser.AddRef(); | ||||
_messages = discord.MessageCache.CreateMessageCache(discord); | |||||
_messages = discord.MessageCache.CreateMessageCache(); | |||||
} | } | ||||
internal static SocketDMChannel Create(DiscordSocketClient discord, ClientState state, Model model) | internal static SocketDMChannel Create(DiscordSocketClient discord, ClientState state, Model model) | ||||
{ | { | ||||
@@ -38,7 +38,7 @@ namespace Discord.WebSocket | |||||
internal SocketGroupChannel(DiscordSocketClient discord, ulong id) | internal SocketGroupChannel(DiscordSocketClient discord, ulong id) | ||||
: base(discord, id) | : base(discord, id) | ||||
{ | { | ||||
_messages = discord.MessageCache.CreateMessageCache(discord); | |||||
_messages = discord.MessageCache.CreateMessageCache(); | |||||
_voiceStates = new ConcurrentDictionary<ulong, SocketVoiceState>(ConcurrentHashSet.DefaultConcurrencyLevel, 5); | _voiceStates = new ConcurrentDictionary<ulong, SocketVoiceState>(ConcurrentHashSet.DefaultConcurrencyLevel, 5); | ||||
_users = new ConcurrentDictionary<ulong, SocketGroupUser>(ConcurrentHashSet.DefaultConcurrencyLevel, 5); | _users = new ConcurrentDictionary<ulong, SocketGroupUser>(ConcurrentHashSet.DefaultConcurrencyLevel, 5); | ||||
} | } | ||||
@@ -54,7 +54,7 @@ namespace Discord.WebSocket | |||||
: base(discord, id, guild) | : base(discord, id, guild) | ||||
{ | { | ||||
if (Discord.MessageCacheSize > 0) | if (Discord.MessageCacheSize > 0) | ||||
_messages = discord.MessageCache.CreateMessageCache(discord); | |||||
_messages = discord.MessageCache.CreateMessageCache(); | |||||
} | } | ||||
internal new static SocketTextChannel Create(SocketGuild guild, ClientState state, Model model) | internal new static SocketTextChannel Create(SocketGuild guild, ClientState state, Model model) | ||||
{ | { | ||||
@@ -5,7 +5,7 @@ namespace Discord | |||||
{ | { | ||||
public interface IMessageCache | public interface IMessageCache | ||||
{ | { | ||||
public IMessageCache CreateMessageCache(DiscordSocketClient discord); | |||||
public IMessageCache CreateMessageCache(); | |||||
public IReadOnlyCollection<SocketMessage> Messages { get; } | public IReadOnlyCollection<SocketMessage> Messages { get; } | ||||
@@ -14,11 +14,11 @@ namespace Discord.WebSocket | |||||
public IReadOnlyCollection<SocketMessage> Messages => _messages.ToReadOnlyCollection(); | public IReadOnlyCollection<SocketMessage> Messages => _messages.ToReadOnlyCollection(); | ||||
public IMessageCache CreateMessageCache(DiscordSocketClient discord) => new MessageCache(discord); | |||||
public IMessageCache CreateMessageCache() => new MessageCache(); | |||||
public MessageCache(DiscordSocketClient discord) | |||||
public MessageCache() | |||||
{ | { | ||||
_size = discord.MessageCacheSize; | |||||
_size = 50; // todo: get this from the existing DiscordSocketConfig value. | |||||
_messages = new ConcurrentDictionary<ulong, SocketMessage>(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(_size * 1.05)); | _messages = new ConcurrentDictionary<ulong, SocketMessage>(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(_size * 1.05)); | ||||
_orderedMessages = new ConcurrentQueue<ulong>(); | _orderedMessages = new ConcurrentQueue<ulong>(); | ||||
} | } | ||||