Beispiel #1
0
        private ILanguageWorkerChannel CreateTestChannel(string workerId, string language)
        {
            var testChannel = _languageWorkerChannelManager.CreateLanguageWorkerChannel(workerId, _scriptRootPath, language, null, null, 0);
            // Generate event to mock language worker response
            RpcChannelReadyEvent javarReadyEvent = new RpcChannelReadyEvent(workerId, language, testChannel, "testVersion", _capabilities);

            _eventManager.Publish(javarReadyEvent);
            return(testChannel);
        }
 private async Task InitializeLanguageWorkerChannel(string language, string scriptRootPath)
 {
     try
     {
         string workerId = Guid.NewGuid().ToString();
         _logger.LogInformation("Creating language worker channel for runtime:{runtime}", language);
         ILanguageWorkerChannel languageWorkerChannel = CreateLanguageWorkerChannel(workerId, scriptRootPath, language, null, null, 0);
         languageWorkerChannel.StartWorkerProcess();
         IObservable <RpcChannelReadyEvent> rpcChannelReadyEvent = _eventManager.OfType <RpcChannelReadyEvent>()
                                                                   .Where(msg => msg.Language == language).Timeout(workerInitTimeout);
         // Wait for response from language worker process
         RpcChannelReadyEvent readyEvent = await rpcChannelReadyEvent.FirstAsync();
     }
     catch (Exception ex)
     {
         throw new HostInitializationException($"Failed to start Language Worker Channel for language :{language}", ex);
     }
 }
Beispiel #3
0
        internal void PublishRpcChannelReadyEvent(RpcEvent initEvent)
        {
            _startLatencyMetric?.Dispose();
            _startLatencyMetric = null;

            _initMessage = initEvent.Message.WorkerInitResponse;
            if (_initMessage.Result.IsFailure(out Exception exc))
            {
                HandleWorkerError(exc);
                return;
            }
            if (_functionRegistrations == null)
            {
                RpcChannelReadyEvent readyEvent = new RpcChannelReadyEvent(_workerId, _workerConfig.Language, this, _initMessage.WorkerVersion, _initMessage.Capabilities);
                _eventManager.Publish(readyEvent);
                return;
            }
            RegisterFunctions(_functionRegistrations);
        }
 private void AddOrUpdateWorkerChannels(RpcChannelReadyEvent rpcChannelReadyEvent)
 {
     _logger.LogInformation("Adding language worker channel for runtime: {language}.", rpcChannelReadyEvent.Language);
     _workerChannels.Add(rpcChannelReadyEvent.Language, rpcChannelReadyEvent.LanguageWorkerChannel);
 }