Browse Source

Finish up by add methods to interfaces

pull/1766/head
Daniel Baynton 4 years ago
parent
commit
260ae1a19e
7 changed files with 12 additions and 9 deletions
  1. +1
    -1
      src/Discord.Net.WebSocket/DiscordSocketConfig.cs
  2. +1
    -0
      src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs
  3. +2
    -2
      src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs
  4. +2
    -1
      src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs
  5. +2
    -1
      src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs
  6. +1
    -1
      src/Discord.Net.WebSocket/Entities/Messages/IMessageCache.cs
  7. +3
    -3
      src/Discord.Net.WebSocket/Entities/Messages/MessageCache.cs

+ 1
- 1
src/Discord.Net.WebSocket/DiscordSocketConfig.cs View File

@@ -190,7 +190,7 @@ namespace Discord.WebSocket
{
WebSocketProvider = DefaultWebSocketProvider.Instance;
UdpSocketProvider = DefaultUdpSocketProvider.Instance;
MessageCache = new MessageCache();
MessageCache = new MessageCache(MessageCacheSize);
}

internal DiscordSocketConfig Clone() => MemberwiseClone() as DiscordSocketConfig;


+ 1
- 0
src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs View File

@@ -17,6 +17,7 @@ namespace Discord.WebSocket
/// A read-only collection of WebSocket-based messages.
/// </returns>
IReadOnlyCollection<SocketMessage> CachedMessages { get; }
IMessageCache MessageCache { get; }

/// <summary>
/// Sends a message to this message channel.


+ 2
- 2
src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs View File

@@ -25,7 +25,7 @@ namespace Discord.WebSocket

/// <inheritdoc />
public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>();
public IMessageCache MessageCache => _messages;
/// <summary>
/// Gets a collection that is the current logged-in user and the recipient.
/// </summary>
@@ -36,7 +36,7 @@ namespace Discord.WebSocket
{
Recipient = recipient;
recipient.GlobalUser.AddRef();
_messages = discord.MessageCache.CreateMessageCache();
_messages = discord.MessageCache.CreateMessageCache(discord.MessageCacheSize);
}
internal static SocketDMChannel Create(DiscordSocketClient discord, ClientState state, Model model)
{


+ 2
- 1
src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs View File

@@ -31,6 +31,7 @@ namespace Discord.WebSocket

/// <inheritdoc />
public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>();
public IMessageCache MessageCache => _messages;
public new IReadOnlyCollection<SocketGroupUser> Users => _users.ToReadOnlyCollection();
public IReadOnlyCollection<SocketGroupUser> Recipients
=> _users.Select(x => x.Value).Where(x => x.Id != Discord.CurrentUser.Id).ToReadOnlyCollection(() => _users.Count - 1);
@@ -38,7 +39,7 @@ namespace Discord.WebSocket
internal SocketGroupChannel(DiscordSocketClient discord, ulong id)
: base(discord, id)
{
_messages = discord.MessageCache.CreateMessageCache();
_messages = discord.MessageCache.CreateMessageCache(discord.MessageCacheSize);
_voiceStates = new ConcurrentDictionary<ulong, SocketVoiceState>(ConcurrentHashSet.DefaultConcurrencyLevel, 5);
_users = new ConcurrentDictionary<ulong, SocketGroupUser>(ConcurrentHashSet.DefaultConcurrencyLevel, 5);
}


+ 2
- 1
src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs View File

@@ -44,6 +44,7 @@ namespace Discord.WebSocket
public string Mention => MentionUtils.MentionChannel(Id);
/// <inheritdoc />
public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>();
public IMessageCache MessageCache => _messages;
/// <inheritdoc />
public override IReadOnlyCollection<SocketGuildUser> Users
=> Guild.Users.Where(x => Permissions.GetValue(
@@ -54,7 +55,7 @@ namespace Discord.WebSocket
: base(discord, id, guild)
{
if (Discord.MessageCacheSize > 0)
_messages = discord.MessageCache.CreateMessageCache();
_messages = discord.MessageCache.CreateMessageCache(discord.MessageCacheSize);
}
internal new static SocketTextChannel Create(SocketGuild guild, ClientState state, Model model)
{


+ 1
- 1
src/Discord.Net.WebSocket/Entities/Messages/IMessageCache.cs View File

@@ -5,7 +5,7 @@ namespace Discord
{
public interface IMessageCache
{
public IMessageCache CreateMessageCache();
public IMessageCache CreateMessageCache(int size);

public IReadOnlyCollection<SocketMessage> Messages { get; }



+ 3
- 3
src/Discord.Net.WebSocket/Entities/Messages/MessageCache.cs View File

@@ -14,11 +14,11 @@ namespace Discord.WebSocket

public IReadOnlyCollection<SocketMessage> Messages => _messages.ToReadOnlyCollection();

public IMessageCache CreateMessageCache() => new MessageCache();
public IMessageCache CreateMessageCache(int size) => new MessageCache(size);

public MessageCache()
public MessageCache(int size)
{
_size = 50; // todo: get this from the existing DiscordSocketConfig value.
_size = size;
_messages = new ConcurrentDictionary<ulong, SocketMessage>(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(_size * 1.05));
_orderedMessages = new ConcurrentQueue<ulong>();
}


Loading…
Cancel
Save