public void UnRegister(EventId id, XEventHandler handler) { if (!_events.ContainsKey(id)) { return; } var list = _events[id]; if (list.Remove(handler)) { _events.Remove(id); } }
public bool IsRegistered(EventId id, XEventHandler handler) { if (handler == null) { return(true); } if (!_events.ContainsKey(id)) { return(false); } return(_events[id].Contains(handler)); }
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); }
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); } }
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); }
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); }
public bool Contains(XEventHandler handler) { return(_items.Exists(item => item.Handler.Equals(handler))); }
public bool Remove(XEventHandler handler) { _items.RemoveAll(item => item.Handler.Equals(handler)); return(_items.Count == 0); }
public void Add(XEventHandler handler, int priority) { _items.Add(new XSubscriber(handler, priority)); _items.Sort(Sort); }
public XSubscriber(XEventHandler handler, int priority = 0) { Priority = priority; Handler = handler; }