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)) { HandleWorkerChannelError(exc); return; } _state = LanguageWorkerChannelState.Initialized; _workerCapabilities.UpdateCapabilities(_initMessage.Capabilities); if (_isWebHostChannel) { _workerChannelLogger.LogDebug("Publishing RpcWebHostChannelReadyEvent for runtime:{language}, workerId:{id}", _workerConfig.Language, _workerId); RpcWebHostChannelReadyEvent readyEvent = new RpcWebHostChannelReadyEvent(_workerId, _runtime, this, _initMessage.WorkerVersion, _initMessage.Capabilities); _eventManager.Publish(readyEvent); } else { _workerChannelLogger.LogDebug("Publishing RpcJobHostChannelReadyEvent for runtime:{language}, workerId:{id}", _workerConfig.Language, _workerId); RpcJobHostChannelReadyEvent readyEvent = new RpcJobHostChannelReadyEvent(_workerId, _runtime, this, _initMessage.WorkerVersion, _initMessage.Capabilities); _eventManager.Publish(readyEvent); } }
internal void WorkerInitResponse(RpcEvent initEvent) { _startLatencyMetric?.Dispose(); _startLatencyMetric = null; _workerChannelLogger.LogDebug("Received WorkerInitResponse"); _initMessage = initEvent.Message.WorkerInitResponse; if (_initMessage.Result.IsFailure(out Exception exc)) { HandleWorkerChannelError(exc); _workerInitTask.SetResult(false); return; } _state = LanguageWorkerChannelState.Initialized; _workerCapabilities.UpdateCapabilities(_initMessage.Capabilities); _workerInitTask.SetResult(true); }