Ejemplo n.º 1
0
 public Task <Response <T1, T2, T3> > GetResponse <T1, T2, T3>(object values, RequestPipeConfiguratorCallback <TRequest> callback, CancellationToken cancellationToken = default, RequestTimeout timeout = default)
     where T1 : class
     where T2 : class
     where T3 : class
 {
     return(impl.GetResponse <T1, T2, T3>(values, callback, cancellationToken, timeout));
 }
Ejemplo n.º 2
0
        public Task <Response <T> > GetResponse <T>(TRequest message, RequestPipeConfiguratorCallback <TRequest> callback,
                                                    CancellationToken cancellationToken = default, RequestTimeout timeout = default)
            where T : class
        {
            async Task <TRequest> Request(Guid requestId, IPipe <SendContext <TRequest> > pipe, CancellationToken token)
            {
                await _requestSendEndpoint.Send(requestId, message, pipe, token).ConfigureAwait(false);

                return(message);
            }

            return(GetResponseInternal <T>(Request, cancellationToken, timeout, callback));
        }
Ejemplo n.º 3
0
        public Task <Response <T> > GetResponse <T>(object values, RequestPipeConfiguratorCallback <TRequest> callback,
                                                    CancellationToken cancellationToken = default, RequestTimeout timeout = default)
            where T : class
        {
            if (values == null)
            {
                throw new ArgumentNullException(nameof(values));
            }

            async Task <TRequest> Request(Guid requestId, IPipe <SendContext <TRequest> > pipe, CancellationToken token)
            {
                return(await _requestSendEndpoint.Send(requestId, values, pipe, token).ConfigureAwait(false));
            }

            return(GetResponseInternal <T>(Request, cancellationToken, timeout, callback));
        }
Ejemplo n.º 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));
        }
Ejemplo n.º 5
0
        async Task <Response <T> > GetResponseInternal <T>(ClientRequestHandle <TRequest> .SendRequestCallback request,
                                                           CancellationToken cancellationToken, RequestTimeout timeout, RequestPipeConfiguratorCallback <TRequest> callback = null)
            where T : class
        {
            using RequestHandle <TRequest> handle = new ClientRequestHandle <TRequest>(_context, request, cancellationToken, timeout.Or(_timeout));

            callback?.Invoke(handle);

            return(await handle.GetResponse <T>().ConfigureAwait(false));
        }
Ejemplo n.º 6
0
 public Task <Response <T1, T2> > GetResponse <T1, T2>(TRequest message, RequestPipeConfiguratorCallback <TRequest> callback, CancellationToken cancellationToken = default, RequestTimeout timeout = default)
     where T1 : class
     where T2 : class
 {
     return(impl.GetResponse <T1, T2>(message, callback, cancellationToken, timeout));
 }