Skip to content

Instantly share code, notes, and snippets.

private readonly ConcurrentBag<Tuple<Func<IUser, object>, Func<IUser, Task>>> GlobalUserListeners = new ConcurrentBag<Tuple<Func<IUser, object>, Func<IUser, Task>>>();
private readonly ConcurrentDictionary<int, IList<Tuple<Func<IUser, object>, Func<IUser, Task>, object>>> UserListeners = new ConcurrentDictionary<int, IList<Tuple<Func<IUser, object>, Func<IUser, Task>, object>>>();
private readonly ConcurrentBag<Tuple<Func<IChannel, object>, Func<IChannel, Task>>> GlobalChannelListeners = new ConcurrentBag<Tuple<Func<IChannel, object>, Func<IChannel, Task>>>();
private readonly ConcurrentDictionary<int, IList<Tuple<Func<IChannel, object>, Func<IChannel, Task>, object>>> ChannelListeners = new ConcurrentDictionary<int, IList<Tuple<Func<IChannel, object>, Func<IChannel, Task>, object>>>();
public void AddListener<T>(Func<T, object> mapper, Func<T, Task> listener) {
ConcurrentBag<Tuple<Func<T, object>, Func<T, Task>>> globalListeners;
ConcurrentDictionary<