public async Task <TResponse> ExecuteAsync( IActivityContext <TRequest> activityContext, ActivityId activityId, TRequest request, ActivityExecutionConfiguration activityExecutionConfiguration, CancellationToken cancellationToken) { using var connectedClient = await activityContext.ConnectAndSendAsync( activityId, request, activityExecutionConfiguration, cancellationToken); var response = await connectedClient.WaitForAsync(activityExecutionConfiguration, cancellationToken); if (response is IOkResultActivityResponse resultActivityResponse) { var success = resultActivityResponse.TryGetResult(out var result); if (result is TResponse resultTyped) { return(resultTyped); } else { } } //response.GetAsActivityEvent //if (response is OkResultActivityResponse<TResponse> okResult) { // if (response.TryGetResult<TResponse>(out var result)) { // return result; //} else { //} throw new NotImplementedException(); }
public override async Task ExecuteAsync( IActivityContext <TestRequest1> activityContext, CancellationToken cancellationToken) { var request = activityContext.Request; var request2 = new TestRequest2() { A = request.A, B = request.B }; ActivityId activityId = ActivityId.NewId(); using var connectedClient = await activityContext.ConnectAndSendAsync( activityId, request2, null, // activityExecutionConfiguration, cancellationToken); var response2 = await connectedClient.WaitForAsync(null, cancellationToken); if (response2.TryGetResult <TestResponse2>(out var result2)) { var response = new TestResponse1() { R = result2.R + 1 }; await this.SetResponseAsync(activityContext, response); return; } else { await activityContext.SetActivityResponseAsync(response2); return; } }