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); }
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); }