Exemplo n.º 1
0
        public static IQueryExecutionBuilder UseInstrumentation(
            this IQueryExecutionBuilder builder,
            TracingPreference tracingPreference)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var listener = new DiagnosticListener(DiagnosticNames.Listener);

            builder
            .RemoveService <DiagnosticListener>()
            .RemoveService <DiagnosticSource>();
            builder.Services
            .AddSingleton(listener)
            .AddSingleton <DiagnosticSource>(listener)
            .AddSingleton(sp => new QueryExecutionDiagnostics(
                              sp.GetRequiredService <DiagnosticListener>(),
                              sp.GetServices <IDiagnosticObserver>()));

            if (tracingPreference != TracingPreference.Never)
            {
                builder
                .AddDiagnosticObserver(new ApolloTracingDiagnosticObserver(
                                           tracingPreference));
            }

            return(builder.Use <InstrumentationMiddleware>());
        }
 public ApolloTracingDiagnosticEventListener(
     TracingPreference tracingPreference  = TracingPreference.OnDemand,
     ITimestampProvider?timestampProvider = null)
 {
     _tracingPreference = tracingPreference;
     _timestampProvider = timestampProvider ?? new DefaultTimestampProvider();
 }
Exemplo n.º 3
0
        internal QueryExecutionDiagnostics(
            DiagnosticListener observable,
            IEnumerable <IDiagnosticObserver> observers,
            TracingPreference tracingPreference)
        {
            _source = observable ??
                      throw new ArgumentNullException(nameof(observable));
            _tracingPreference = tracingPreference;

            Subscribe(observable, observers);
        }
        public static IRequestExecutorBuilder AddApolloTracing(
            this IRequestExecutorBuilder builder,
            TracingPreference tracingPreference  = TracingPreference.OnDemand,
            ITimestampProvider?timestampProvider = null)
        {
            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (tracingPreference == TracingPreference.Never)
            {
                return(builder);
            }

            return(builder.AddDiagnosticEventListener(
                       sp => new ApolloTracingDiagnosticEventListener(
                           tracingPreference,
                           timestampProvider ?? sp.GetService <ITimestampProvider>())));
        }
Exemplo n.º 5
0
 internal ApolloTracingDiagnosticObserver(
     TracingPreference tracingPreference)
 {
     _tracingPreference = tracingPreference;
 }