public virtual HttpResponseMessage Send(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            CheckDisposed();

            if (ShouldSendWithTelemetry(request))
            {
                HttpTelemetry.Log.RequestStart(request);

                try
                {
                    return(_handler.Send(request, cancellationToken));
                }
                catch when(LogRequestFailed(telemetryStarted: true))
                {
                    // Unreachable as LogRequestFailed will return false
                    throw;
                }
                finally
                {
                    HttpTelemetry.Log.RequestStop();
                }
            }
            else
            {
                return(_handler.Send(request, cancellationToken));
            }
        }
Exemple #2
0
        public virtual HttpResponseMessage Send(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            ArgumentNullException.ThrowIfNull(request);

            ObjectDisposedException.ThrowIf(_disposed, this);

            if (ShouldSendWithTelemetry(request))
            {
                HttpTelemetry.Log.RequestStart(request);

                try
                {
                    return(_handler.Send(request, cancellationToken));
                }
                catch when(LogRequestFailed(telemetryStarted: true))
                {
                    // Unreachable as LogRequestFailed will return false
                    throw;
                }
                finally
                {
                    HttpTelemetry.Log.RequestStop();
                }
            }
            else
            {
                return(_handler.Send(request, cancellationToken));
            }
        }
 internal override ValueTask <HttpResponseMessage> SendAsync(HttpRequestMessage request, bool async, CancellationToken cancellationToken)
 {
     if (IsEnabled())
     {
         return(SendAsyncCore(request, async, cancellationToken));
     }
     else
     {
         return(async ?
                new ValueTask <HttpResponseMessage>(_innerHandler.SendAsync(request, cancellationToken)) :
                new ValueTask <HttpResponseMessage>(_innerHandler.Send(request, cancellationToken)));
     }
 }
Exemple #4
0
        public virtual HttpResponseMessage Send(HttpRequestMessage request,
                                                CancellationToken cancellationToken)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            CheckDisposed();

            return(_handler.Send(request, cancellationToken));
        }
Exemple #5
0
        public HttpResponseMessage Send(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            if (request.SetIsUsed())
            {
                throw new InvalidOperationException("Cannot send the same request message multiple times");
            }

            if (request.RequestUri == null)
            {
                if (base_address == null)
                {
                    throw new InvalidOperationException("The request URI must either be an absolute URI or BaseAddress must be set");
                }

                request.RequestUri = base_address;
            }

            try {
                if (cancellation_token == null)
                {
                    cancellation_token = new CancellationTokenSource();
                }

                using (var cts = CancellationTokenSource.CreateLinkedTokenSource(cancellation_token.Token, cancellationToken)) {
                    cts.CancelAfter(timeout);

                    var response = handler.Send(request, cts.Token);
                    if (response == null)
                    {
                        throw new InvalidOperationException("Handler failed to return a response");
                    }

                    return(response);
                }
            } finally {
                cancellation_token.Dispose();
                cancellation_token = null;
            }
        }
        public virtual HttpResponseMessage Send(HttpRequestMessage request,
                                                CancellationToken cancellationToken)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            CheckDisposed();

            if (NetEventSource.IsEnabled)
            {
                NetEventSource.Enter(this, request);
            }

            HttpResponseMessage response = _handler.Send(request, cancellationToken);

            if (NetEventSource.IsEnabled)
            {
                NetEventSource.Exit(this, response);
            }

            return(response);
        }