コード例 #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>());
        }
コード例 #2
0
        public static IQueryExecutionBuilder AddOptions(
            this IQueryExecutionBuilder builder,
            IQueryExecutionOptionsAccessor options)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            builder
            .RemoveService <IQueryExecutionOptionsAccessor>()
            .RemoveService <IErrorHandlerOptionsAccessor>()
            .RemoveService <IInstrumentationOptionsAccessor>()
            .RemoveService <IQueryCacheSizeOptionsAccessor>()
            .RemoveService <IRequestTimeoutOptionsAccessor>()
            .RemoveService <IValidateQueryOptionsAccessor>();
            builder.Services.AddOptions(options);

            return(builder);
        }
コード例 #3
0
        public static IQueryExecutionBuilder AddParser <T>(
            this IQueryExecutionBuilder builder)
            where T : class, IQueryParser
        {
            builder.RemoveService <IQueryParser>();
            builder.Services.AddSingleton <IQueryParser, T>();

            return(builder);
        }
コード例 #4
0
 public static IQueryExecutionBuilder AddMD5DocumentHashProvider(
     this IQueryExecutionBuilder builder,
     HashFormat format)
 {
     builder.RemoveService <IDocumentHashProvider>();
     builder.Services.AddSingleton <IDocumentHashProvider>(
         new MD5DocumentHashProvider(format));
     return(builder);
 }
コード例 #5
0
 public static IQueryExecutionBuilder AddSha256DocumentHashProvider(
     this IQueryExecutionBuilder builder)
 {
     builder.RemoveService <IDocumentHashProvider>();
     builder.Services.AddSingleton <
         IDocumentHashProvider,
         Sha256DocumentHashProvider>();
     return(builder);
 }
コード例 #6
0
 public static IQueryExecutionBuilder AddExecutionStrategyResolver(
     this IQueryExecutionBuilder builder)
 {
     builder.RemoveService <IExecutionStrategyResolver>();
     builder.Services.AddSingleton <
         IExecutionStrategyResolver,
         ExecutionStrategyResolver>();
     return(builder);
 }
コード例 #7
0
        private static IQueryExecutionBuilder RemoveService <TService>(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.RemoveService(typeof(TService)));
        }
コード例 #8
0
        public static IQueryExecutionBuilder AddParser <T>(
            this IQueryExecutionBuilder builder)
            where T : class, IQueryParser
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.RemoveService <IQueryParser>();
            builder.Services.AddSingleton <IQueryParser, T>();

            return(builder);
        }
コード例 #9
0
        public static IQueryExecutionBuilder AddParser <T>(
            this IQueryExecutionBuilder builder,
            Func <IServiceProvider, IQueryParser> factory)
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            builder.RemoveService <IQueryParser>();
            builder.Services.AddSingleton(factory);

            return(builder);
        }
コード例 #10
0
        public static IQueryExecutionBuilder AddErrorHandler(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder
            .RemoveService <IErrorHandler>();
            builder.Services
            .AddSingleton <IErrorHandler, ErrorHandler>();

            return(builder);
        }
コード例 #11
0
        public static IQueryExecutionBuilder AddQueryCache(
            this IQueryExecutionBuilder builder,
            int size)
        {
            builder
            .RemoveService <Cache <DirectiveLookup> >()
            .RemoveService <Cache <DocumentNode> >()
            .RemoveService <Cache <OperationDefinitionNode> >();
            builder.Services
            .AddSingleton(new Cache <DirectiveLookup>(size))
            .AddSingleton(new Cache <DocumentNode>(size))
            .AddSingleton(new Cache <OperationDefinitionNode>(size));

            return(builder);
        }
コード例 #12
0
        public static IQueryExecutionBuilder AddExecutionStrategyResolver(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.RemoveService<IExecutionStrategyResolver>();
            builder.Services.AddSingleton<
                IExecutionStrategyResolver,
                ExecutionStrategyResolver>();

            return builder;
        }
コード例 #13
0
        public static IQueryExecutionBuilder AddQueryCache(
            this IQueryExecutionBuilder builder,
            int cacheSize)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder
            .RemoveService <Cache <DirectiveMiddlewareCompiler> >()
            .RemoveService <Cache <DocumentNode> >()
            .RemoveService <Cache <OperationDefinitionNode> >();
            builder.Services
            .AddSingleton(new Cache <DirectiveMiddlewareCompiler>(cacheSize))
            .AddSingleton(new Cache <DocumentNode>(cacheSize))
            .AddSingleton(new Cache <OperationDefinitionNode>(cacheSize));

            return(builder);
        }
コード例 #14
0
 private static IQueryExecutionBuilder RemoveService <TService>(
     this IQueryExecutionBuilder builder)
 {
     return(builder.RemoveService(typeof(TService)));
 }