/// <summary> /// Add subscriber /// </summary> /// <param name="subscriber"></param> /// <returns></returns> internal EventSourceSubscriber Add(IEventSourceSubscriber subscriber) { var subscription = new EventSourceSubscriber(subscriber, this); lock (_subscriptions) { _subscriptions.Add(subscription); } UpdateEventLevel(); return(subscription); }
/// <inheritdoc/> public IDisposable Subscribe(string eventSource, IEventSourceSubscriber subscriber) { if (subscriber == null) { throw new ArgumentNullException(nameof(subscriber)); } if (string.IsNullOrEmpty(eventSource)) { throw new ArgumentNullException(nameof(eventSource)); } var source = _subscribers.GetOrAdd(eventSource, name => new EventSourceWrapper(this)); return(source.Add(subscriber)); }
/// <summary> /// Create listener /// </summary> /// <param name="subscriber"></param> /// <param name="outer"></param> internal EventSourceSubscriber( IEventSourceSubscriber subscriber, EventSourceWrapper outer) { _subscriber = subscriber; _outer = outer; }