Пример #1
0
        internal void PublishRpcChannelReadyEvent(RpcEvent initEvent)
        {
            _startLatencyMetric?.Dispose();
            _startLatencyMetric = null;

            if (_disposing)
            {
                // do not publish ready events when disposing
                return;
            }
            _initMessage = initEvent.Message.WorkerInitResponse;
            if (_initMessage.Result.IsFailure(out Exception exc))
            {
                HandleWorkerError(exc);
                return;
            }

            _state = LanguageWorkerChannelState.Initialized;
            if (_isWebHostChannel)
            {
                RpcWebHostChannelReadyEvent readyEvent = new RpcWebHostChannelReadyEvent(_workerId, _workerConfig.Language, this, _initMessage.WorkerVersion, _initMessage.Capabilities);
                _eventManager.Publish(readyEvent);
            }
            else
            {
                RpcJobHostChannelReadyEvent readyEvent = new RpcJobHostChannelReadyEvent(_workerId, _workerConfig.Language, this, _initMessage.WorkerVersion, _initMessage.Capabilities);
                _eventManager.Publish(readyEvent);
            }
        }
 private void AddOrUpdateWorkerChannels(RpcJobHostChannelReadyEvent rpcChannelReadyEvent)
 {
     if (!_disposing)
     {
         _logger.LogDebug("Adding jobhost language worker channel for runtime: {language}.", rpcChannelReadyEvent.Language);
         rpcChannelReadyEvent.LanguageWorkerChannel.RegisterFunctions(_workerState.Functions);
         State = FunctionDispatcherState.Initialized;
     }
 }
 private void AddOrUpdateWorkerChannels(RpcJobHostChannelReadyEvent rpcChannelReadyEvent)
 {
     if (!_disposing)
     {
         _logger.LogDebug("Adding jobhost language worker channel for runtime: {language}. workerId:{id}", rpcChannelReadyEvent.Language, rpcChannelReadyEvent.LanguageWorkerChannel.Id);
         rpcChannelReadyEvent.LanguageWorkerChannel.SendFunctionLoadRequests();
         State = FunctionDispatcherState.Initialized;
     }
 }
        public Task StartWorkerProcessAsync()
        {
            // To verify FunctionDispatcher transistions
            Task.Delay(TimeSpan.FromMilliseconds(100));
            string workerVersion = Guid.NewGuid().ToString();
            IDictionary <string, string> workerCapabilities = new Dictionary <string, string>()
            {
                { "test", "testSupported" }
            };

            if (_isWebhostChannel)
            {
                RpcWebHostChannelReadyEvent readyEvent = new RpcWebHostChannelReadyEvent(_workerId, _runtime, this, workerVersion, workerCapabilities);
                _eventManager.Publish(readyEvent);
            }
            else
            {
                RpcJobHostChannelReadyEvent readyEvent = new RpcJobHostChannelReadyEvent(_workerId, _runtime, this, workerVersion, workerCapabilities);
                _eventManager.Publish(readyEvent);
            }
            _state = LanguageWorkerChannelState.Initialized;
            return(Task.CompletedTask);
        }