示例#1
0
 public void Unsubscribe(IFNodeWatcher watcher,FNode watched)
 {
     if (_watchedFNodes.Contains(watched)) {
         List<IFNodeWatcher> watchers=_watchersByFNode[watched];
         watchers.Remove(watcher);
         if (watchers.Count==0) {
             _watchersByFNode.Remove(watched);
             _watchedFNodes.Remove(watched);
         }
     }
 }
示例#2
0
 public void Unsubscribe(IFNodeWatcher watcher)
 {
     int i=_watchedFNodes.Count;
     while (i-->0) {
         FNode watched=_watchedFNodes[i];
         List<IFNodeWatcher> watchers=_watchersByFNode[watched];
         watchers.Remove(watcher);
         if (watchers.Count==0) {
             _watchersByFNode.Remove(watched);
             _watchedFNodes.RemoveAt(i);
         }
     }
 }
示例#3
0
 public void Subscribe(IFNodeWatcher watcher,FNode watched)
 {
     if (!_watchedFNodes.Contains(watched)) {
         _watchedFNodes.Add(watched);
         List<IFNodeWatcher> watchers=new List<IFNodeWatcher>();
         watchers.Add(watcher);
         _watchersByFNode.Add(watched,watchers);
     } else {
         _watchersByFNode[watched].Add(watcher);
     }
 }