Browse Source

Use Cache/Uncache instead of OnCached/OnUncached

tags/docs-0.9
RogueException 9 years ago
parent
commit
0086537872
7 changed files with 9 additions and 12 deletions
  1. +1
    -1
      src/Discord.Net/DiscordClient.Channels.cs
  2. +1
    -1
      src/Discord.Net/DiscordClient.Members.cs
  3. +1
    -1
      src/Discord.Net/DiscordClient.Messages.cs
  4. +1
    -1
      src/Discord.Net/DiscordClient.Roles.cs
  5. +1
    -1
      src/Discord.Net/DiscordClient.Servers.cs
  6. +1
    -1
      src/Discord.Net/DiscordClient.Users.cs
  7. +3
    -6
      src/Discord.Net/Helpers/AsyncCollection.cs

+ 1
- 1
src/Discord.Net/DiscordClient.Channels.cs View File

@@ -9,7 +9,7 @@ namespace Discord
internal sealed class Channels : AsyncCollection<Channel> internal sealed class Channels : AsyncCollection<Channel>
{ {
public Channels(DiscordClient client, object writerLock) public Channels(DiscordClient client, object writerLock)
: base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { }
: base(client, writerLock) { }


public Channel GetOrAdd(string id, string serverId, string recipientId = null) public Channel GetOrAdd(string id, string serverId, string recipientId = null)
=> GetOrAdd(id, () => new Channel(_client, id, serverId, recipientId)); => GetOrAdd(id, () => new Channel(_client, id, serverId, recipientId));


+ 1
- 1
src/Discord.Net/DiscordClient.Members.cs View File

@@ -8,7 +8,7 @@ namespace Discord
internal sealed class Users : AsyncCollection<User> internal sealed class Users : AsyncCollection<User>
{ {
public Users(DiscordClient client, object writerLock) public Users(DiscordClient client, object writerLock)
: base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { }
: base(client, writerLock) { }
private string GetKey(string userId, string serverId) private string GetKey(string userId, string serverId)
=> User.GetId(userId, serverId); => User.GetId(userId, serverId);




+ 1
- 1
src/Discord.Net/DiscordClient.Messages.cs View File

@@ -13,7 +13,7 @@ namespace Discord
private bool _isEnabled; private bool _isEnabled;


public Messages(DiscordClient client, object writerLock, bool isEnabled) public Messages(DiscordClient client, object writerLock, bool isEnabled)
: base(client, writerLock, x => x.OnCached(), x => x.OnUncached())
: base(client, writerLock)
{ {
_isEnabled = isEnabled; _isEnabled = isEnabled;
} }


+ 1
- 1
src/Discord.Net/DiscordClient.Roles.cs View File

@@ -10,7 +10,7 @@ namespace Discord
public Role VirtualEveryone { get; private set; } public Role VirtualEveryone { get; private set; }


public Roles(DiscordClient client, object writerLock) public Roles(DiscordClient client, object writerLock)
: base(client, writerLock, x => x.OnCached(), x => x.OnUncached())
: base(client, writerLock)
{ {
VirtualEveryone = new Role(client, "Private", null); VirtualEveryone = new Role(client, "Private", null);
} }


+ 1
- 1
src/Discord.Net/DiscordClient.Servers.cs View File

@@ -9,7 +9,7 @@ namespace Discord
internal sealed class Servers : AsyncCollection<Server> internal sealed class Servers : AsyncCollection<Server>
{ {
public Servers(DiscordClient client, object writerLock) public Servers(DiscordClient client, object writerLock)
: base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { }
: base(client, writerLock) { }


public Server GetOrAdd(string id) public Server GetOrAdd(string id)
=> GetOrAdd(id, () => new Server(_client, id)); => GetOrAdd(id, () => new Server(_client, id));


+ 1
- 1
src/Discord.Net/DiscordClient.Users.cs View File

@@ -9,7 +9,7 @@ namespace Discord
internal sealed class GlobalUsers : AsyncCollection<GlobalUser> internal sealed class GlobalUsers : AsyncCollection<GlobalUser>
{ {
public GlobalUsers(DiscordClient client, object writerLock) public GlobalUsers(DiscordClient client, object writerLock)
: base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { }
: base(client, writerLock) { }


public GlobalUser GetOrAdd(string id) => GetOrAdd(id, () => new GlobalUser(_client, id)); public GlobalUser GetOrAdd(string id) => GetOrAdd(id, () => new GlobalUser(_client, id));
} }


+ 3
- 6
src/Discord.Net/Helpers/AsyncCollection.cs View File

@@ -52,15 +52,12 @@ namespace Discord


protected readonly DiscordClient _client; protected readonly DiscordClient _client;
protected readonly ConcurrentDictionary<string, TValue> _dictionary; protected readonly ConcurrentDictionary<string, TValue> _dictionary;
private readonly Action<TValue> _onCache, _onUncache;


protected AsyncCollection(DiscordClient client, object writerLock, Action<TValue> onCache, Action<TValue> onUncache)
protected AsyncCollection(DiscordClient client, object writerLock)
{ {
_client = client; _client = client;
_writerLock = writerLock; _writerLock = writerLock;
_dictionary = new ConcurrentDictionary<string, TValue>(); _dictionary = new ConcurrentDictionary<string, TValue>();
_onCache = onCache;
_onUncache = onUncache;
} }


public TValue this[string key] public TValue this[string key]
@@ -88,7 +85,7 @@ namespace Discord
result = _dictionary.GetOrAdd(key, newItem); result = _dictionary.GetOrAdd(key, newItem);
if (result == newItem) if (result == newItem)
{ {
_onCache(result);
result.Cache();
RaiseItemCreated(result); RaiseItemCreated(result);
} }
} }
@@ -103,7 +100,7 @@ namespace Discord
TValue result; TValue result;
if (_dictionary.TryRemove(key, out result)) if (_dictionary.TryRemove(key, out result))
{ {
_onUncache(result); //TODO: If this object is accessed before OnRemoved finished firing, properties such as Server.Channels will have null elements
result.Uncache(); //TODO: If this object is accessed before OnRemoved finished firing, properties such as Server.Channels will have null elements
return result; return result;
} }
} }


Loading…
Cancel
Save