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); } }
internal void WorkerInitResponse(GrpcEvent initEvent) { _startLatencyMetric?.Dispose(); _startLatencyMetric = null; _workerChannelLogger.LogDebug("Received WorkerInitResponse. Worker process initialized"); _initMessage = initEvent.Message.WorkerInitResponse; _workerChannelLogger.LogDebug($"Worker capabilities: {_initMessage.Capabilities}"); if (_initMessage.Result.IsFailure(out Exception exc)) { HandleWorkerInitError(exc); _workerInitTask.SetResult(false); return; } _state = _state | RpcWorkerChannelState.Initialized; _workerCapabilities.UpdateCapabilities(_initMessage.Capabilities); _isSharedMemoryDataTransferEnabled = IsSharedMemoryDataTransferEnabled(); if (!_isSharedMemoryDataTransferEnabled) { // If the worker does not support using shared memory data transfer, caching must also be disabled ScriptHost.IsFunctionDataCacheEnabled = false; } _workerInitTask.SetResult(true); }
public Task <WorkerInitResponse> InitializeWorkerAsync(WorkerInitRequest request) { var response = new WorkerInitResponse { Result = new StatusResult { Status = Status.Success } }; return(Task.FromResult(response)); }
internal void WorkerInitResponse(RpcEvent initEvent) { _startLatencyMetric?.Dispose(); _startLatencyMetric = null; _workerChannelLogger.LogDebug("Received WorkerInitResponse. Worker process initialized"); _initMessage = initEvent.Message.WorkerInitResponse; if (_initMessage.Result.IsFailure(out Exception exc)) { HandleWorkerInitError(exc); _workerInitTask.SetResult(false); return; } _state = RpcWorkerChannelState.Initialized; _workerCapabilities.UpdateCapabilities(_initMessage.Capabilities); _workerInitTask.SetResult(true); }
public void PublishWorkerInitResponseEvent() { StatusResult statusResult = new StatusResult() { Status = StatusResult.Types.Status.Success }; WorkerInitResponse initResponse = new WorkerInitResponse() { Result = statusResult }; StreamingMessage responseMessage = new StreamingMessage() { WorkerInitResponse = initResponse }; _eventManager.Publish(new InboundGrpcEvent(_workerId, responseMessage)); }
internal static WorkerInitResponse WorkerInitRequestHandler(WorkerInitRequest request) { var response = new WorkerInitResponse { Result = new StatusResult { Status = StatusResult.Types.Status.Success }, WorkerVersion = WorkerInformation.Instance.WorkerVersion }; response.Capabilities.Add("RpcHttpBodyOnly", bool.TrueString); response.Capabilities.Add("RawHttpBodyBytes", bool.TrueString); response.Capabilities.Add("RpcHttpTriggerMetadataRemoved", bool.TrueString); response.Capabilities.Add("UseNullableValueDictionaryForHttp", bool.TrueString); response.Capabilities.Add("TypedDataCollection", bool.TrueString); return(response); }
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); }
public void PublishWorkerInitResponseEvent(IDictionary <string, string> capabilities = null) { StatusResult statusResult = new StatusResult() { Status = StatusResult.Types.Status.Success }; WorkerInitResponse initResponse = new WorkerInitResponse() { Result = statusResult }; if (capabilities != null) { initResponse.Capabilities.Add(capabilities); } StreamingMessage responseMessage = new StreamingMessage() { WorkerInitResponse = initResponse }; _eventManager.Publish(new InboundGrpcEvent(_workerId, responseMessage)); }