static async Task PrimeNumberDecomposition(Channel channel) { WriteHeader("PrimeNumberDecomposition"); var primeNumDecompositionClient = new PrimeNumberDecompositionService.PrimeNumberDecompositionServiceClient(channel); var primeNumDecompositionRequest = new DecompositionRequest { Value = 246 }; var primeNumDecompoResponse = primeNumDecompositionClient.Decompose(primeNumDecompositionRequest); while (await primeNumDecompoResponse.ResponseStream.MoveNext()) { Console.WriteLine(primeNumDecompoResponse.ResponseStream.Current.Divider); } }
public override async Task Decompose(DecompositionRequest request, IServerStreamWriter <DecompositionResponse> responseStream, ServerCallContext context) { var k = 2; var value = request.Value; while (value > 1) { if (value % k == 0) { await responseStream.WriteAsync(new DecompositionResponse { Divider = k }); value /= k; await Task.Delay(200); } else { k++; } } }