コード例 #1
0
        // 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
            });
        }
コード例 #2
0
        // 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
            });
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        public Task <WorkerInitResponse> InitializeWorkerAsync(WorkerInitRequest request)
        {
            var response = new WorkerInitResponse
            {
                Result = new StatusResult {
                    Status = Status.Success
                }
            };

            return(Task.FromResult(response));
        }
コード例 #5
0
 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);
 }
コード例 #6
0
        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);
        }