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); }