Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        }                                                                                 //__SILP__

        //__SILP__
        public bool RemoveVarWatcher(IVarWatcher watcher)                                 //__SILP__
        {
            if (WeakListHelper.Remove(_VarWatchers, watcher))                             //__SILP__
            {
                return(true);                                                             //__SILP__
            }                                                                             //__SILP__
            return(false);                                                                //__SILP__
        }                                                                                 //__SILP__
Ejemplo n.º 3
0
 }                                                                                 //__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__
Ejemplo n.º 4
0
 private void OnElementIndexChanged(T element)
 {
     WeakListHelper.Notify(_Watchers, (ITableWatcher <T> watcher) => {
         watcher.OnElementIndexChanged(element);
     });
     WeakListHelper.Notify(_GenericWatchers, (ITableWatcher <T> watcher) => {
         watcher.OnElementIndexChanged(element);
     });
 }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
            });
        }
Ejemplo n.º 8
0
        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);
            });
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
 }                                                              //__SILP__
                                                                //__SILP__
 public bool AddRequestChecker(IRequestChecker checker)         //__SILP__
 {
     return(WeakListHelper.Add(ref _RequestCheckers, checker)); //__SILP__
 }                                                              //__SILP__
Ejemplo n.º 12
0
 public bool AddSub(TSub sub)
 {
     return(WeakListHelper.Add <TSub>(ref _ClassSubscribers, sub));
 }
Ejemplo n.º 13
0
 public bool RemoveSub(TSub sub)
 {
     return(WeakListHelper.Remove <TSub>(_ClassSubscribers, sub));
 }
Ejemplo n.º 14
0
 }                                                             //__SILP__
                                                               //__SILP__
 public bool AddEventWatcher(IEventWatcher listener)           //__SILP__
 {
     return(WeakListHelper.Add(ref _EventWatchers, listener)); //__SILP__
 }                                                             //__SILP__
Ejemplo n.º 15
0
 public int GetSubCount()
 {
     return(WeakListHelper.Count(_ClassSubscribers));
 }
Ejemplo n.º 16
0
        }                                                                                 //__SILP__

        //__SILP__
        public void FireOnChanged()                                                       //__SILP__
        {
            WeakListHelper.Notify(_VarWatchers, (IVarWatcher watcher) => {                //__SILP__
                watcher.OnChanged(this);                                                  //__SILP__
            });                                                                           //__SILP__
        }                                                                                 //__SILP__
Ejemplo n.º 17
0
        }                                                             //__SILP__

        //__SILP__
        public bool RemoveEventWatcher(IEventWatcher listener)        //__SILP__
        {
            return(WeakListHelper.Remove(_EventWatchers, listener));  //__SILP__
        }                                                             //__SILP__
Ejemplo n.º 18
0
        }                                                                //__SILP__

        //__SILP__
        public bool RemoveResponseWatcher(IResponseWatcher listener)     //__SILP__
        {
            return(WeakListHelper.Remove(_ResponseWatchers, listener));  //__SILP__
        }                                                                //__SILP__
Ejemplo n.º 19
0
 public bool AddTableWatcher(ITableWatcher <T> watcher)
 {
     return(WeakListHelper.Add(ref _Watchers, watcher));
 }
Ejemplo n.º 20
0
 }                                                                //__SILP__
                                                                  //__SILP__
 public bool AddResponseWatcher(IResponseWatcher listener)        //__SILP__
 {
     return(WeakListHelper.Add(ref _ResponseWatchers, listener)); //__SILP__
 }                                                                //__SILP__
Ejemplo n.º 21
0
        }                                                              //__SILP__

        //__SILP__
        public bool RemoveRequestChecker(IRequestChecker checker)      //__SILP__
        {
            return(WeakListHelper.Remove(_RequestCheckers, checker));  //__SILP__
        }                                                              //__SILP__
Ejemplo n.º 22
0
 public bool RemoveTableWatcher(ITableWatcher <T> watcher)
 {
     return(WeakListHelper.Remove(_Watchers, watcher));
 }
Ejemplo n.º 23
0
 public bool RemoveDictWatcher(IDictWatcher <T> watcher)
 {
     return(WeakListHelper.Remove(_Watchers, watcher));
 }
Ejemplo n.º 24
0
 public bool AddDictWatcher(IDictWatcher <T> watcher)
 {
     return(WeakListHelper.Add(ref _Watchers, watcher));
 }