示例#1
0
        public HttpFunctionInvocationDispatcher(IOptions <ScriptJobHostOptions> scriptHostOptions,
                                                IMetricsLogger metricsLogger,
                                                IScriptJobHostEnvironment scriptJobHostEnvironment,
                                                IScriptEventManager eventManager,
                                                ILoggerFactory loggerFactory,
                                                IHttpWorkerChannelFactory httpWorkerChannelFactory)
        {
            _metricsLogger            = metricsLogger;
            _scriptOptions            = scriptHostOptions.Value;
            _scriptJobHostEnvironment = scriptJobHostEnvironment;
            _eventManager             = eventManager;
            _logger = loggerFactory.CreateLogger <HttpFunctionInvocationDispatcher>();
            _httpWorkerChannelFactory = httpWorkerChannelFactory ?? throw new ArgumentNullException(nameof(httpWorkerChannelFactory));

            State = FunctionInvocationDispatcherState.Default;

            _workerErrorSubscription = _eventManager.OfType <HttpWorkerErrorEvent>()
                                       .Subscribe(WorkerError);
            _workerRestartSubscription = _eventManager.OfType <HttpWorkerRestartEvent>()
                                         .Subscribe(WorkerRestart);
        }
示例#2
0
        public FunctionInvocationDispatcherFactory(IOptions <ScriptJobHostOptions> scriptHostOptions,
                                                   IMetricsLogger metricsLogger,
                                                   IApplicationLifetime applicationLifetime,
                                                   IScriptEventManager eventManager,
                                                   ILoggerFactory loggerFactory,
                                                   IHttpWorkerChannelFactory httpWorkerChannelFactory,
                                                   IRpcWorkerChannelFactory rpcWorkerChannelFactory,
                                                   IOptions <HttpWorkerOptions> httpWorkerOptions,
                                                   IOptionsMonitor <LanguageWorkerOptions> rpcWorkerOptions,
                                                   IEnvironment environment,
                                                   IWebHostRpcWorkerChannelManager webHostLanguageWorkerChannelManager,
                                                   IJobHostRpcWorkerChannelManager jobHostLanguageWorkerChannelManager,
                                                   IOptions <ManagedDependencyOptions> managedDependencyOptions,
                                                   IRpcFunctionInvocationDispatcherLoadBalancer functionDispatcherLoadBalancer,
                                                   IOptions <WorkerConcurrencyOptions> workerConcurrencyOptions)
        {
            if (httpWorkerOptions.Value == null)
            {
                throw new ArgumentNullException(nameof(httpWorkerOptions.Value));
            }

            if (httpWorkerOptions.Value.Description != null)
            {
                _functionDispatcher = new HttpFunctionInvocationDispatcher(scriptHostOptions, metricsLogger, applicationLifetime, eventManager, loggerFactory, httpWorkerChannelFactory);
                return;
            }
            _functionDispatcher = new RpcFunctionInvocationDispatcher(scriptHostOptions,
                                                                      metricsLogger,
                                                                      environment,
                                                                      applicationLifetime,
                                                                      eventManager,
                                                                      loggerFactory,
                                                                      rpcWorkerChannelFactory,
                                                                      rpcWorkerOptions,
                                                                      webHostLanguageWorkerChannelManager,
                                                                      jobHostLanguageWorkerChannelManager,
                                                                      managedDependencyOptions,
                                                                      functionDispatcherLoadBalancer,
                                                                      workerConcurrencyOptions);
        }