public void OnNext(DiagnosticListener value)
        {
            var subscribedAny = false;


            if (_listener != null)
            {
                if (value.Name == _listener.Name)
                {
                    var listenerType = _listener.GetType();
                    if (_agent is null || _agent.SubscribedListeners.Add(listenerType) || _listener.AllowDuplicates)
                    {
                        _sourceSubscription = new SubscribedListenerDisposable(value.Subscribe(_listener), () => _agent.SubscribedListeners.Remove(listenerType));
                        _logger.Debug()
                        ?.Log("Subscribed {DiagnosticListenerType} to `{DiagnosticListenerName}' events source",
                              listenerType.FullName, value.Name);
                        subscribedAny = true;
                    }
                    else
                    {
                        _logger.Debug()?.Log("{DiagnosticListenerType} already subscribed to `{DiagnosticListenerName}' events source",
                                             listenerType.FullName, value.Name);
                    }
                }
            }
Exemplo n.º 2
0
        public void OnNext(DiagnosticListener value)
        {
            var subscribedAny = false;

            if (_listener != null)
            {
                if (value.Name == _listener.Name)
                {
                    _sourceSubscription = value.Subscribe(_listener);
                    _logger.Debug()
                    ?.Log("Subscribed {DiagnosticListenerType} to `{DiagnosticListenerName}' events source",
                          _listener.GetType().FullName, value.Name);
                    subscribedAny = true;
                }
            }
            else
            {
                foreach (var listener in _listeners)
                {
                    if (value.Name == listener.Name)
                    {
                        _sourceSubscription = value.Subscribe(listener);
                        _logger.Debug()
                        ?.Log("Subscribed {DiagnosticListenerType} to `{DiagnosticListenerName}' events source",
                              listener.GetType().FullName, value.Name);
                        subscribedAny = true;
                    }
                }
            }

            if (!subscribedAny)
            {
                var listenerTypes = _listener != null
                                        ? _listener.GetType().FullName
                                        : string.Join(", ", _listeners.Select(listener => listener.GetType().FullName));

                _logger.Trace()
                ?.Log(
                    "There are no listeners in the current batch ({DiagnosticListeners}) that would like to subscribe to `{DiagnosticListenerName}' events source",
                    listenerTypes,
                    value.Name);
            }
        }
Exemplo n.º 3
0
        private static TResult DispatchToImpl <TResult>(
            IDiagnosticListener listener,
            Func <HttpDiagnosticListenerCoreImpl, TResult> coreImplFunc,
            Func <HttpDiagnosticListenerFullFrameworkImpl, TResult> fullFrameworkImplFunc
            )
        {
            switch (listener)
            {
            case HttpDiagnosticListenerCoreImpl impl:
                return(coreImplFunc(impl));

            case HttpDiagnosticListenerFullFrameworkImpl impl:
                return(fullFrameworkImplFunc(impl));

            default:
                throw new AssertionFailedException($"Unrecognized {nameof(HttpDiagnosticListener)} implementation - {listener.GetType()}");
            }
        }