private static async Task DoDoublePing(DoublePing.DoublePingClient client, int requestNum, string payload, UInt16 delay) { var request = new PingRequest { Payload = payload, DelayMilliseconds = delay }; try { IMessage <PingResponse> responseShouldThrow = await client.PingShouldThrowAsync(request); Console.WriteLine($"Request #{requestNum} response: \"{responseShouldThrow.Payload.Deserialize().Payload}\". Delay: {delay}"); } catch (RpcException e) { Console.WriteLine($"Error!: #{e.Status.Detail} with code: {e.Status.StatusCode}"); } IMessage <PingResponse> response = await client.PingAsync(request); Console.WriteLine($"Request #{requestNum} response: \"{response.Payload.Deserialize().Payload}\". Delay: {delay}"); IMessage <PingResponse> responsePingNoPayload = await client.PingNoPayloadAsync(); Console.WriteLine($"Request #{requestNum} response: \"{responsePingNoPayload.Payload.Deserialize().Payload}\"."); await client.PingVoidAsync(); client.PingNoResponseAsync(request); }
private static Task[] MakeRequestsAndPrintAsync(int numRequests) { var pingClient = new PingPong <PingRequest> .PingPongClient(pingChannel); var doublePingClient = new DoublePing.DoublePingClient(pingChannel); var tasks = new Task[2 * numRequests]; var rnd = new Random(); foreach (var requestNum in Enumerable.Range(0, numRequests)) { UInt16 delay = (UInt16)rnd.Next(2000); tasks[(2 * requestNum)] = DoPingPong(pingClient, requestNum, "ping" + requestNum.ToString(), delay); delay = (UInt16)rnd.Next(2000); tasks[(2 * requestNum) + 1] = DoDoublePing(doublePingClient, requestNum, "ping2" + requestNum.ToString(), delay); } return(tasks); }