public override async Task GenerateNumber(GenerateNumbersRequest request, IServerStreamWriter <GetNumbersResponse> responseStream, ServerCallContext context) { _logger.LogInformation($"{request.Count} number generation requested"); await foreach (int number in _generator.Generate(request.Count)) { await responseStream.WriteAsync(new GetNumbersResponse { Number = number }); } }
public async IAsyncEnumerable <int> GenerateNumbers(int count) { GenerateController.GenerateControllerClient client = _factory.CreateClient <GenerateController.GenerateControllerClient>(); GenerateNumbersRequest request = new GenerateNumbersRequest { Count = count }; using (AsyncServerStreamingCall <GetNumbersResponse> streamingCall = client.GenerateNumber(request)) { await foreach (GetNumbersResponse response in streamingCall.ResponseStream.ReadAllAsync()) { yield return(response.Number); } } }