private bool TryGetSubscriber(MeteringEvent evt, out List <CountTrackerDiagnostics <TEntityType, TCountType> .Subscriber> listener) { bool result; lock (this.syncObject) { result = this.listeners.TryGetValue(evt, out listener); } return(result); }
private void RaiseEvent(MeteringEvent evt, TCountType filter) { List <CountTrackerDiagnostics <TEntityType, TCountType> .Subscriber> collection; if (this.TryGetSubscriber(evt, out collection)) { List <CountTrackerDiagnostics <TEntityType, TCountType> .Subscriber> list = new List <CountTrackerDiagnostics <TEntityType, TCountType> .Subscriber>(collection); foreach (CountTrackerDiagnostics <TEntityType, TCountType> .Subscriber subscriber in list) { subscriber.RaiseEvent(filter); } } }
private void AddSubscriber(MeteringEvent evt, CountTrackerDiagnostics <TEntityType, TCountType> .Subscriber subscriber) { lock (this.syncObject) { List <CountTrackerDiagnostics <TEntityType, TCountType> .Subscriber> list; if (!this.listeners.TryGetValue(evt, out list)) { list = new List <CountTrackerDiagnostics <TEntityType, TCountType> .Subscriber>(); this.listeners.Add(evt, list); } list.Add(subscriber); } }
public void SubscribeTo(MeteringEvent evt, ICountedEntity <TEntityType> entity, Action <ICountedEntity <TEntityType> > entityDelegate) { this.AddSubscriber(evt, new CountTrackerDiagnostics <TEntityType, TCountType> .Subscriber(entityDelegate, entity)); }
public void SubscribeTo(MeteringEvent evt, TCountType?measure, Action <TCountType> measureDelegate) { this.AddSubscriber(evt, new CountTrackerDiagnostics <TEntityType, TCountType> .Subscriber(measureDelegate, measure)); }