Example #1
0
        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));
        }
Example #2
0
 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));
     }
 }
Example #3
0
        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));
        }
Example #4
0
        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));
        }