// send capabilities to worker, wait for WorkerInitResponse internal void SendWorkerInitRequest(GrpcEvent startEvent) { _workerChannelLogger.LogDebug("Worker Process started. Received StartStream message"); _inboundWorkerEvents.Where(msg => msg.MessageType == MsgType.WorkerInitResponse) .Timeout(_workerConfig.CountOptions.InitializationTimeout) .Take(1) .Subscribe(WorkerInitResponse, HandleWorkerInitError); WorkerInitRequest initRequest = GetWorkerInitRequest(); // Run as Functions Host V2 compatible if (_environment.IsV2CompatibilityMode()) { _workerChannelLogger.LogDebug("Worker and host running in V2 compatibility mode"); initRequest.Capabilities.Add(RpcWorkerConstants.V2Compatable, "true"); } if (ScriptHost.IsFunctionDataCacheEnabled) { // FunctionDataCache is available from the host side - we send this to the worker. // As long as the worker replies back with the SharedMemoryDataTransfer capability, the cache // can be used. initRequest.Capabilities.Add(RpcWorkerConstants.FunctionDataCache, "true"); } SendStreamingMessage(new StreamingMessage { WorkerInitRequest = initRequest }); }
// send capabilities to worker, wait for WorkerInitResponse internal void SendWorkerInitRequest(RpcEvent startEvent) { _workerChannelLogger.LogDebug("Worker Process started. Received StartStream message"); _inboundWorkerEvents.Where(msg => msg.MessageType == MsgType.WorkerInitResponse) .Timeout(workerInitTimeout) .Take(1) .Subscribe(WorkerInitResponse, HandleWorkerInitError); var initRequest = new WorkerInitRequest() { HostVersion = ScriptHost.Version, }; // Run as Functions Host V2 compatible if (_environment.IsV2CompatibilityMode()) { _workerChannelLogger.LogDebug("Worker and host running in V2 compatibility mode"); initRequest.Capabilities.Add(RpcWorkerConstants.V2Compatable, "true"); } SendStreamingMessage(new StreamingMessage { WorkerInitRequest = initRequest }); }
public void WorkerInitRequest_Expected() { WorkerInitRequest initRequest = _workerChannel.GetWorkerInitRequest(); Assert.NotNull(initRequest.WorkerDirectory); Assert.NotNull(initRequest.HostVersion); Assert.Equal("testDir", initRequest.WorkerDirectory); Assert.Equal(ScriptHost.Version, initRequest.HostVersion); }
public Task <WorkerInitResponse> InitializeWorkerAsync(WorkerInitRequest request) { var response = new WorkerInitResponse { Result = new StatusResult { Status = Status.Success } }; return(Task.FromResult(response)); }
private static async Task HandleWorkerInitRequest(WorkerInitRequest initRequest) { var response = new StreamingMessage() { RequestId = s_requestId, WorkerInitResponse = new WorkerInitResponse() { Result = new StatusResult() { Status = StatusResult.Types.Status.Success } } }; await s_call.RequestStream.WriteAsync(response); }
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); }