public Data HandleRequest(Data req) { if (_Handler == null) { return(null); } if (!WeakListHelper.IsValid(_RequestCheckers, (IRequestChecker checker) => { return(checker.IsValidRequest(this, req)); })) { return(null); } WeakListHelper.Notify(_RequestWatchers, (IRequestWatcher listener) => { listener.OnRequest(this, req); }); Data res = _Handler.DoHandle(this, req); AdvanceRevision(); WeakListHelper.Notify(_ResponseWatchers, (IResponseWatcher listener) => { listener.OnResponse(this, req, res); }); return(res); }
} //__SILP__ //__SILP__ public bool RemoveVarWatcher(IVarWatcher watcher) //__SILP__ { if (WeakListHelper.Remove(_VarWatchers, watcher)) //__SILP__ { return(true); //__SILP__ } //__SILP__ return(false); //__SILP__ } //__SILP__
} //__SILP__ //__SILP__ public bool AddVarWatcher(IVarWatcher watcher) //__SILP__ { if (WeakListHelper.Add(ref _VarWatchers, watcher)) //__SILP__ { CheckWatcherWrapper(); //__SILP__ return(true); //__SILP__ } //__SILP__ return(false); //__SILP__ } //__SILP__
private void OnElementIndexChanged(T element) { WeakListHelper.Notify(_Watchers, (ITableWatcher <T> watcher) => { watcher.OnElementIndexChanged(element); }); WeakListHelper.Notify(_GenericWatchers, (ITableWatcher <T> watcher) => { watcher.OnElementIndexChanged(element); }); }
public bool RemoveDictWatcher <T1>(IDictWatcher <T1> watcher) where T1 : class, IInDictElement { IDictWatcher <T> wrapper = GetWrapperWatcher(watcher);; if (wrapper != null) { return(WeakListHelper.Remove(_GenericWatchers, wrapper)); } return(false); }
public bool AddDictWatcher <T1>(IDictWatcher <T1> watcher) where T1 : class, IInDictElement { IDictWatcher <T> wrapper = GetWrapperWatcher(watcher);; if (wrapper == null) { wrapper = CreateWrapperWatcher <T1>(watcher); return(WeakListHelper.Add(ref _GenericWatchers, wrapper)); } return(false); }
private void OnElementAdded(T element) { if (element.DebugMode) { element.Debug("Added"); } WeakListHelper.Notify(_Watchers, (ITableWatcher <T> watcher) => { watcher.OnElementAdded(element); }); WeakListHelper.Notify(_GenericWatchers, (ITableWatcher <T> watcher) => { watcher.OnElementAdded(element); }); }
private void OnElementRemoved(T element) { if (element.DebugMode) { element.Debug("Removed"); } WeakListHelper.Notify(_Watchers, (IDictWatcher <T> watcher) => { watcher.OnElementRemoved(element); }); WeakListHelper.Notify(_GenericWatchers, (IDictWatcher <T> watcher) => { watcher.OnElementRemoved(element); }); }
public bool FireEvent(Data evt) { if (!WeakListHelper.IsValid(_EventCheckers, (IEventChecker checker) => { return(checker.IsValidEvent(this, evt)); })) { return(false); } AdvanceRevision(); WeakListHelper.Notify(_EventWatchers, (IEventWatcher listener) => { listener.OnEvent(this, evt); }); return(true); }
public void Publish(TPub pub, Action <TSub> callback) { if (_InstanceSubscribers != null) { int pubHash = pub.GetHashCode(); WeakList <TSub> subs = null; if (_InstanceSubscribers.TryGetValue(pubHash, out subs)) { subs.ForEach(callback); if (subs.Count == 0) { _InstanceSubscribers.Remove(pubHash); } } } WeakListHelper.Notify(_ClassSubscribers, callback); }
} //__SILP__ //__SILP__ public bool AddRequestChecker(IRequestChecker checker) //__SILP__ { return(WeakListHelper.Add(ref _RequestCheckers, checker)); //__SILP__ } //__SILP__
public bool AddSub(TSub sub) { return(WeakListHelper.Add <TSub>(ref _ClassSubscribers, sub)); }
public bool RemoveSub(TSub sub) { return(WeakListHelper.Remove <TSub>(_ClassSubscribers, sub)); }
} //__SILP__ //__SILP__ public bool AddEventWatcher(IEventWatcher listener) //__SILP__ { return(WeakListHelper.Add(ref _EventWatchers, listener)); //__SILP__ } //__SILP__
public int GetSubCount() { return(WeakListHelper.Count(_ClassSubscribers)); }
} //__SILP__ //__SILP__ public void FireOnChanged() //__SILP__ { WeakListHelper.Notify(_VarWatchers, (IVarWatcher watcher) => { //__SILP__ watcher.OnChanged(this); //__SILP__ }); //__SILP__ } //__SILP__
} //__SILP__ //__SILP__ public bool RemoveEventWatcher(IEventWatcher listener) //__SILP__ { return(WeakListHelper.Remove(_EventWatchers, listener)); //__SILP__ } //__SILP__
} //__SILP__ //__SILP__ public bool RemoveResponseWatcher(IResponseWatcher listener) //__SILP__ { return(WeakListHelper.Remove(_ResponseWatchers, listener)); //__SILP__ } //__SILP__
public bool AddTableWatcher(ITableWatcher <T> watcher) { return(WeakListHelper.Add(ref _Watchers, watcher)); }
} //__SILP__ //__SILP__ public bool AddResponseWatcher(IResponseWatcher listener) //__SILP__ { return(WeakListHelper.Add(ref _ResponseWatchers, listener)); //__SILP__ } //__SILP__
} //__SILP__ //__SILP__ public bool RemoveRequestChecker(IRequestChecker checker) //__SILP__ { return(WeakListHelper.Remove(_RequestCheckers, checker)); //__SILP__ } //__SILP__
public bool RemoveTableWatcher(ITableWatcher <T> watcher) { return(WeakListHelper.Remove(_Watchers, watcher)); }
public bool RemoveDictWatcher(IDictWatcher <T> watcher) { return(WeakListHelper.Remove(_Watchers, watcher)); }
public bool AddDictWatcher(IDictWatcher <T> watcher) { return(WeakListHelper.Add(ref _Watchers, watcher)); }