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; WebSocketProvider = DefaultWebSocketProvider.Instance;
UdpSocketProvider = DefaultUdpSocketProvider.Instance; UdpSocketProvider = DefaultUdpSocketProvider.Instance;
MessageCache = new MessageCache();
MessageCache = new MessageCache(MessageCacheSize);
} }


internal DiscordSocketConfig Clone() => MemberwiseClone() as DiscordSocketConfig; 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. /// A read-only collection of WebSocket-based messages.
/// </returns> /// </returns>
IReadOnlyCollection<SocketMessage> CachedMessages { get; } IReadOnlyCollection<SocketMessage> CachedMessages { get; }
IMessageCache MessageCache { get; }


/// <summary> /// <summary>
/// Sends a message to this message channel. /// 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 /> /// <inheritdoc />
public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>(); public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>();
public IMessageCache MessageCache => _messages;
/// <summary> /// <summary>
/// Gets a collection that is the current logged-in user and the recipient. /// Gets a collection that is the current logged-in user and the recipient.
/// </summary> /// </summary>
@@ -36,7 +36,7 @@ namespace Discord.WebSocket
{ {
Recipient = recipient; Recipient = recipient;
recipient.GlobalUser.AddRef(); recipient.GlobalUser.AddRef();
_messages = discord.MessageCache.CreateMessageCache();
_messages = discord.MessageCache.CreateMessageCache(discord.MessageCacheSize);
} }
internal static SocketDMChannel Create(DiscordSocketClient discord, ClientState state, Model model) 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 /> /// <inheritdoc />
public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>(); public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>();
public IMessageCache MessageCache => _messages;
public new IReadOnlyCollection<SocketGroupUser> Users => _users.ToReadOnlyCollection(); public new IReadOnlyCollection<SocketGroupUser> Users => _users.ToReadOnlyCollection();
public IReadOnlyCollection<SocketGroupUser> Recipients public IReadOnlyCollection<SocketGroupUser> Recipients
=> _users.Select(x => x.Value).Where(x => x.Id != Discord.CurrentUser.Id).ToReadOnlyCollection(() => _users.Count - 1); => _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) internal SocketGroupChannel(DiscordSocketClient discord, ulong id)
: base(discord, id) : base(discord, id)
{ {
_messages = discord.MessageCache.CreateMessageCache();
_messages = discord.MessageCache.CreateMessageCache(discord.MessageCacheSize);
_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);
} }


+ 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); public string Mention => MentionUtils.MentionChannel(Id);
/// <inheritdoc /> /// <inheritdoc />
public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>(); public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>();
public IMessageCache MessageCache => _messages;
/// <inheritdoc /> /// <inheritdoc />
public override IReadOnlyCollection<SocketGuildUser> Users public override IReadOnlyCollection<SocketGuildUser> Users
=> Guild.Users.Where(x => Permissions.GetValue( => Guild.Users.Where(x => Permissions.GetValue(
@@ -54,7 +55,7 @@ namespace Discord.WebSocket
: base(discord, id, guild) : base(discord, id, guild)
{ {
if (Discord.MessageCacheSize > 0) 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) 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 interface IMessageCache
{ {
public IMessageCache CreateMessageCache();
public IMessageCache CreateMessageCache(int size);


public IReadOnlyCollection<SocketMessage> Messages { get; } 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 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)); _messages = new ConcurrentDictionary<ulong, SocketMessage>(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(_size * 1.05));
_orderedMessages = new ConcurrentQueue<ulong>(); _orderedMessages = new ConcurrentQueue<ulong>();
} }


Loading…
Cancel
Save