async Task <Response <T1, T2> > GetResponseInternal <T1, T2>(ClientRequestHandle <TRequest> .SendRequestCallback request, CancellationToken cancellationToken, RequestTimeout timeout) where T1 : class where T2 : class { using RequestHandle <TRequest> handle = new ClientRequestHandle <TRequest>(_context, request, cancellationToken, timeout.Or(_timeout)); Task <Response <T1> > result1 = handle.GetResponse <T1>(false); Task <Response <T2> > result2 = handle.GetResponse <T2>(); await Task.WhenAny(result1, result2).ConfigureAwait(false); return(new Response <T1, T2>(result1, result2)); }
async Task <Response <T> > GetResponseInternal <T>(ClientRequestHandle <TRequest> .SendRequestCallback request, CancellationToken cancellationToken, RequestTimeout timeout) where T : class { using RequestHandle <TRequest> handle = new ClientRequestHandle <TRequest>(_context, request, cancellationToken, timeout.Or(_timeout)); return(await handle.GetResponse <T>().ConfigureAwait(false)); }
public async Task <Response <T> > GetResponse <T>(TRequest message, CancellationToken cancellationToken, RequestTimeout timeout) where T : class { using (RequestHandle <TRequest> handle = new ClientRequestHandle <TRequest>(_context, _requestSendEndpoint, message, cancellationToken, timeout.Or(_timeout))) { return(await handle.GetResponse <T>().ConfigureAwait(false)); } }
async Task <Response <T1, T2, T3> > GetResponseInternal <T1, T2, T3>(ClientRequestHandle <TRequest> .SendRequestCallback request, CancellationToken cancellationToken, RequestTimeout timeout, RequestPipeConfiguratorCallback <TRequest> callback = null) where T1 : class where T2 : class where T3 : class { using RequestHandle <TRequest> handle = new ClientRequestHandle <TRequest>(_context, request, cancellationToken, timeout.Or(_timeout)); callback?.Invoke(handle); Task <Response <T1> > result1 = handle.GetResponse <T1>(false); Task <Response <T2> > result2 = handle.GetResponse <T2>(false); Task <Response <T3> > result3 = handle.GetResponse <T3>(); var task = await Task.WhenAny(result1, result2, result3).ConfigureAwait(false); await task.ConfigureAwait(false); return(new Response <T1, T2, T3>(result1, result2, result3)); }