public void Subscribe(WebSocketSubscribeInfo info) { WebSocketSubscribeInfo exist = Subscribtions.FirstOrDefault(s => s.Command.channel == info.Command.channel && s.Command.command == info.Command.command && s.Command.userID == info.Command.userID); if (exist != null) { exist.AddRef(); return; } info.ShouldUpdateSubscribtion = true; Subscribtions.Add(info); info.AddRef(); SubscribeCore(info); }
public void Unsubscribe(WebSocketSubscribeInfo info) { if (Signal != null) { return; } WebSocketSubscribeInfo found = Subscribtions.FirstOrDefault(s => s.Command.channel == info.Command.channel && s.Command.userID == info.Command.userID); if (found == null) { return; } found.Release(); if (found.RefCount > 0) { return; } Subscribtions.Remove(found); UnsubscribeCore(info); }