public void UnSubscribeDataChange(string path, IZkDataListener listener) { lock (this) { _dataListener.TryGetValue(path, out var dataListeners); dataListeners?.Remove(listener); _dataListener[path] = dataListeners; } }
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); }
/// <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); }