示例#1
0
 public void UnSubscribeDataChange(string path, IZkDataListener listener)
 {
     lock (this)
     {
         _dataListener.TryGetValue(path, out var dataListeners);
         dataListeners?.Remove(listener);
         _dataListener[path] = dataListeners;
     }
 }
示例#2
0
        public void SubscribeDataChange(string path, IZkDataListener listener)
        {
            lock (this)
            {
                _dataListener.TryGetValue(path, out var dataListeners);
                if (dataListeners == null)
                {
                    dataListeners = new HashSet <IZkDataListener>();
                }
                dataListeners.Add(listener);
                _dataListener[path] = dataListeners;
            }

            Task.Run(async() => await WatchForData(path));
        }
        public void UnsubscribeDataChanges(string path, IZkDataListener dataListener)
        {
            lock (_dataListener)
            {
                ConcurrentHashSet <IZkDataListener> listeners = _dataListener.Get(path);
                if (listeners != null)
                {
                    listeners.TryRemove(dataListener);
                }

                if (listeners == null || listeners.Count == 0)
                {
                    ConcurrentHashSet <IZkDataListener> _;
                    _dataListener.TryRemove(path, out _);
                }
            }
        }
        public void SubscribeDataChanges(string path, IZkDataListener listener)
        {
            ConcurrentHashSet <IZkDataListener> listeners;

            lock (_dataListener)
            {
                listeners = _dataListener.Get(path);
                if (listeners == null)
                {
                    listeners           = new ConcurrentHashSet <IZkDataListener>();
                    _dataListener[path] = listeners;
                }

                listeners.Add(listener);
            }

            WatchForData(path);
            Logger.Debug("Subscribed Data changes for " + path);
        }
示例#5
0
        /// <summary>
        /// 订阅指定路径的数据变化
        /// </summary>
        /// <param name="path">待监听的nodePath</param>
        /// <param name="dataListener">指定路径的监听实例</param>
        public void SubscribeDataChanges(string path, IZkDataListener dataListener)
        {
            ConcurrentHashSet <IZkDataListener> listeners;

            lock (_dataListener)
            {
                listeners = _dataListener.Get(path);
                if (listeners == null)
                {
                    listeners           = new ConcurrentHashSet <IZkDataListener>();
                    _dataListener[path] = listeners;
                }

                listeners.Add(dataListener);
            }
            WatchForData(path);

            System.Diagnostics.Debug.WriteLine("Subscribed Data changes for " + path);
        }