public ServerServiceDefinitionProvider(
     Func <TService> serviceFactory,
     IServiceEndpointBinder <TService>?endpointBinder,
     ServiceModelGrpcServiceOptions?options)
 {
     _serviceFactory = serviceFactory;
     _endpointBinder = endpointBinder;
     _options        = options;
 }
Beispiel #2
0
        /// <summary>
        /// Registers a ServiceModel.Grpc service (one instance for all calls) in the <see cref="Server.ServiceDefinitionCollection"/>.
        /// This method used by generated source code.
        /// </summary>
        /// <typeparam name="TService">The implementation type of ServiceModel.Grpc service.</typeparam>
        /// <param name="services">The <see cref="Server.ServiceDefinitionCollection"/>.</param>
        /// <param name="service">The service instance.</param>
        /// <param name="endpointBinder">The generated service endpoint binder.</param>
        /// <param name="configure">The optional configuration action to provide a configuration the service.</param>
        /// <returns><see cref="Server.ServiceDefinitionCollection"/>.</returns>
        public static Server.ServiceDefinitionCollection AddServiceModelSingleton <TService>(
            this Server.ServiceDefinitionCollection services,
            TService service,
            IServiceEndpointBinder <TService> endpointBinder,
            Action <ServiceModelGrpcServiceOptions>?configure = default)
        {
            services.AssertNotNull(nameof(services));
            services.AssertNotNull(nameof(endpointBinder));

            BindService(services, () => service, endpointBinder, configure);
            return(services);
        }
Beispiel #3
0
        /// <summary>
        /// Registers a ServiceModel.Grpc service (one instance per-call) in the <see cref="Server.ServiceDefinitionCollection"/>.
        /// This method used by generated source code.
        /// </summary>
        /// <typeparam name="TService">The implementation type of ServiceModel.Grpc service.</typeparam>
        /// <param name="services">The <see cref="Server.ServiceDefinitionCollection"/>.</param>
        /// <param name="serviceFactory">Method which creates a service instance.</param>
        /// <param name="endpointBinder">The generated service endpoint binder.</param>
        /// <param name="configure">The optional configuration action to provide a configuration the service.</param>
        /// <returns><see cref="Server.ServiceDefinitionCollection"/>.</returns>
        public static Server.ServiceDefinitionCollection AddServiceModelTransient <TService>(
            this Server.ServiceDefinitionCollection services,
            Func <TService> serviceFactory,
            IServiceEndpointBinder <TService> endpointBinder,
            Action <ServiceModelGrpcServiceOptions>?configure = default)
        {
            services.AssertNotNull(nameof(services));
            serviceFactory.AssertNotNull(nameof(serviceFactory));
            services.AssertNotNull(nameof(endpointBinder));

            BindService(services, serviceFactory, endpointBinder, configure);
            return(services);
        }
Beispiel #4
0
        private static void BindService <TService>(
            Server.ServiceDefinitionCollection services,
            Func <TService> serviceFactory,
            IServiceEndpointBinder <TService>?endpointBinder,
            Action <ServiceModelGrpcServiceOptions>?configure)
        {
            ValidateServiceType(typeof(TService));

            ServiceModelGrpcServiceOptions?options = null;

            if (configure != null)
            {
                options = new ServiceModelGrpcServiceOptions();
                configure(options);
            }

            var definition = new ServerServiceDefinitionProvider <TService>(serviceFactory, endpointBinder, options).CreateDefinition();

            services.Add(definition);
        }