Beispiel #1
0
        public void UnRegister(EventId id, XEventHandler handler)
        {
            if (!_events.ContainsKey(id))
            {
                return;
            }

            var list = _events[id];

            if (list.Remove(handler))
            {
                _events.Remove(id);
            }
        }
Beispiel #2
0
        public bool IsRegistered(EventId id, XEventHandler handler)
        {
            if (handler == null)
            {
                return(true);
            }

            if (!_events.ContainsKey(id))
            {
                return(false);
            }

            return(_events[id].Contains(handler));
        }
Beispiel #3
0
        public BatchEventProcessorBenchmarks()
        {
            var ringBuffer      = new RingBuffer <XEvent>(() => new XEvent(), new SingleProducerSequencer(4096, new SpinWaitWaitStrategy()));
            var eventHandler    = new XEventHandler();
            var sequenceBarrier = ringBuffer.NewBarrier();

            ringBuffer.PublishEvent().Dispose();

            var dataProviderProxy    = StructProxy.CreateProxyInstance <IDataProvider <XEvent> >(ringBuffer);
            var sequenceBarrierProxy = StructProxy.CreateProxyInstance(sequenceBarrier);
            var eventHandlerProxy    = StructProxy.CreateProxyInstance <IEventHandler <XEvent> >(eventHandler);
            var batchStartAwareProxy = new NoopBatchStartAware();

            var runnerType = typeof(Runner <, , , ,>).MakeGenericType(typeof(XEvent), dataProviderProxy.GetType(), sequenceBarrierProxy.GetType(), eventHandlerProxy.GetType(), batchStartAwareProxy.GetType());

            _runner = (IRunner)Activator.CreateInstance(runnerType, dataProviderProxy, sequenceBarrierProxy, eventHandlerProxy, batchStartAwareProxy);
        }
Beispiel #4
0
 protected void RegisterEvent(XEventDefine eventID, XEventHandler handler)
 {
     if (!Deprecated)
     {
         if (_eventMap == null)
         {
             _eventMap = new Dictionary <XEventDefine, EventHandler>();
         }
         if (_eventMap.ContainsKey(eventID))
         {
             return;
         }
         EventHandler eh = new EventHandler();
         eh.eventDefine = eventID;
         eh.handler     = handler;
         _eventMap.Add(eventID, eh);
         XEventMgr.singleton.AddRegist(eventID, this);
     }
 }
Beispiel #5
0
        public void Register(EventId id, XEventHandler handler, int priority = 0)
        {
            if (IsRegistered(id, handler))
            {
                return;
            }

            XSubscriberList list = null;

            if (!_events.ContainsKey(id))
            {
                list = new XSubscriberList();
                _events.Add(id, list);
            }
            else
            {
                list = _events[id];
            }

            list.Add(handler, priority);
        }
Beispiel #6
0
 public virtual bool DispatchEvent(XEventArgs e)
 {
     if (!Deprecated && _eventMap != null)
     {
         if (_eventMap.ContainsKey(e.ArgsDefine))
         {
             var etor = _eventMap.GetEnumerator();
             while (etor.MoveNext())
             {
                 EventHandler eh = etor.Current.Value;
                 if (eh.eventDefine == e.ArgsDefine)
                 {
                     XEventHandler func = eh.handler;
                     if (func != null)
                     {
                         func(e);
                     }
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
Beispiel #7
0
 public bool Contains(XEventHandler handler)
 {
     return(_items.Exists(item => item.Handler.Equals(handler)));
 }
Beispiel #8
0
 public bool Remove(XEventHandler handler)
 {
     _items.RemoveAll(item => item.Handler.Equals(handler));
     return(_items.Count == 0);
 }
Beispiel #9
0
 public void Add(XEventHandler handler, int priority)
 {
     _items.Add(new XSubscriber(handler, priority));
     _items.Sort(Sort);
 }
Beispiel #10
0
 public XSubscriber(XEventHandler handler, int priority = 0)
 {
     Priority = priority;
     Handler  = handler;
 }