示例#1
0
            /// <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);
            }
示例#2
0
        /// <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));
        }
示例#3
0
 /// <summary>
 /// Create listener
 /// </summary>
 /// <param name="subscriber"></param>
 /// <param name="outer"></param>
 internal EventSourceSubscriber(
     IEventSourceSubscriber subscriber, EventSourceWrapper outer)
 {
     _subscriber = subscriber;
     _outer      = outer;
 }