示例#1
0
        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);
        }
示例#2
0
        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);
        }