public override async Task <IMessage <PingResponse> > PingAsync(IMessage <PingRequest> param, CancellationToken ct) { PingRequest request = param.Payload.Deserialize(); if (request.DelayMilliseconds > 0) { UInt16 delayMs = Math.Min(MaxDelayMilliseconds, request.DelayMilliseconds); await Task.Delay(delayMs); } var response = new PingResponse { Payload = string.Concat(request.Payload.Reverse()) }; return(Message.FromPayload(response)); }
private static async Task DoPingPong(PingPongProxy <EpoxyConnection> proxy, int requestNum, string payload, UInt16 delay) { var request = new PingRequest { Payload = payload, DelayMilliseconds = delay }; IMessage <PingResponse> message = await proxy.PingAsync(request); if (message.IsError) { Error error = message.Error.Deserialize(); Console.WriteLine($"Request #{requestNum} failed: {error.error_code}: {error.message}"); } else { PingResponse response = message.Payload.Deserialize(); Console.WriteLine($"Request #{requestNum} response: \"{response.Payload}\". Delay: {delay}"); } }