コード例 #1
0
        /// <summary>
        /// 删除节点事件监听
        /// </summary>
        /// <param name="path">节点path</param>
        /// <param name="dataListener">监听对象</param>
        public void UnSubscribeNodeChanges(string path, IZKNodeListener dataListener)
        {
            this._nodeListeners.TryGetValue(path, out ConcurrentHashSet <IZKNodeListener> listeners);
            listeners?.TryRemove(dataListener);

            if (listeners != null && !listeners.IsEmpty)
            {
                return;
            }
            _nodeListeners.TryRemove(path, out ConcurrentHashSet <IZKNodeListener> _listeners);
        }
コード例 #2
0
        /// <summary>
        /// 添加节点事件监听
        /// </summary>
        /// <param name="path">节点path</param>
        /// <param name="listener">监听对象</param>
        public void SubscribeNodeChanges(string path, IZKNodeListener listener)
        {
            this._nodeListeners.TryGetValue(path, out ConcurrentHashSet <IZKNodeListener> listeners);
            if (listeners == null)
            {
                listeners = new ConcurrentHashSet <IZKNodeListener>();
                this._nodeListeners.TryAdd(path, listeners);
            }
            listeners.TryAdd(listener);
            Task.Run(async() =>
            {
                await WatchForDataAsync(path);
            }).ConfigureAwait(false).GetAwaiter().GetResult();

            _logHandler.Info($"Subscribed node changes for {path}");
        }