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); }
private void OnElementIndexChanged(T element) { WeakListHelper.Notify(_Watchers, (ITableWatcher <T> watcher) => { watcher.OnElementIndexChanged(element); }); WeakListHelper.Notify(_GenericWatchers, (ITableWatcher <T> watcher) => { watcher.OnElementIndexChanged(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); }); }
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); }); }
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 void FireOnChanged() //__SILP__ { WeakListHelper.Notify(_VarWatchers, (IVarWatcher watcher) => { //__SILP__ watcher.OnChanged(this); //__SILP__ }); //__SILP__ } //__SILP__