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); } if (request.Payload.Contains("4")) { return(Message.FromError <PingResponse>(new Error { error_code = 4, message = "Four? Why would you think I like the number 4? Reverse likes 4, but not me.", })); } var response = new PingResponse { Payload = request.Payload }; return(Message.FromPayload(response)); }
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}"); } }