public async Task <InvocationResponse> InvokeAsync(FunctionInvocation invocation) { // TODO: File InvocationResponse removal issue InvocationResponse response = new InvocationResponse { InvocationId = invocation.InvocationId }; FunctionExecutionContext?executionContext = null; try { executionContext = _functionExecutionContextFactory.Create(invocation, _functionMap[invocation.FunctionId]); await _functionExecutionDelegate(executionContext); var parameterBindings = executionContext.OutputBindings; var result = executionContext.InvocationResult; foreach (var paramBinding in parameterBindings) { // TODO: ParameterBinding shouldn't happen here foreach (var binding in executionContext.OutputBindings) { var parameterBinding = new ParameterBinding { Name = binding.Key, Data = binding.Value.ToRpc() }; response.OutputData.Add(parameterBinding); } } if (result != null) { var returnVal = result.ToRpc(); response.ReturnValue = returnVal; } response.Result = new StatusResult { Status = Status.Success }; } catch (Exception ex) { response.Result = new StatusResult { Exception = ex.ToRpcException(), Status = Status.Failure }; } finally { (executionContext as IDisposable)?.Dispose(); } return(response); }
private static void OutputInvocationResponse(InvocationResponse iResponse) { Log.Warn(" [Response]"); Log.Info(" -Name: "+ iResponse.ControlMessageName); Log.Info(" -Description: "+ iResponse.Description); Log.Info(" [Output] "); foreach (var p in iResponse.OutputParameters) { Log.Info(" [Parameter] "); Log.Info(" -Parameter Name: "+ p.Name); Log.Info(" -Parameter Value Description: "+ p.ValueDescription); } }
private async Task DumpAsync(InvocationResponse input) { try { await webhookRepository.AddInvokationAsync(input.Webhook.Id, input.Dump, input.Result, input.Elapsed); } catch (Exception ex) { log.LogError(ex, w => w .WriteProperty("action", "DumpHook") .WriteProperty("status", "Failed")); } }
public void InvokeResponse(InvocationResponse invokeResponse) { _executingInvocations.Remove(invokeResponse.InvocationId); }