| @@ -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>(); | ||||
| } | } | ||||