Struct hyper::client::conn::SendRequest

source ·
pub struct SendRequest<B> {
    dispatch: Sender<Request<B>, Response<Body>>,
}
Expand description

The sender side of an established connection.

Fields§

§dispatch: Sender<Request<B>, Response<Body>>

Implementations§

source§

impl<B> SendRequest<B>

source

pub fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<()>>

Polls to determine whether this sender can be used yet for a request.

If the associated connection is closed, this returns an Error.

source

pub(super) async fn when_ready(self) -> Result<Self>

source

pub(super) fn is_ready(&self) -> bool

source

pub(super) fn is_closed(&self) -> bool

source

pub(super) fn into_http2(self) -> Http2SendRequest<B>

source§

impl<B> SendRequest<B>
where B: HttpBody + 'static,

source

pub fn send_request(&mut self, req: Request<B>) -> ResponseFuture

Sends a Request on the associated connection.

Returns a future that if successful, yields the Response.

§Note

There are some key differences in what automatic things the Client does for you that will not be done here:

  • Client requires absolute-form Uris, since the scheme and authority are needed to connect. They aren’t required here.
  • Since the Client requires absolute-form Uris, it can add the Host header based on it. You must add a Host header yourself before calling this method.
  • Since absolute-form Uris are not required, if received, they will be serialized as-is.
§Example
use hyper::Request;

// build a Request
let req = Request::builder()
    .uri("/foo/bar")
    .header(HOST, "hyper.rs")
    .body(Body::empty())
    .unwrap();

// send it and await a Response
let res = tx.send_request(req).await?;
// assert the Response
assert!(res.status().is_success());
source

pub(super) fn send_request_retryable( &mut self, req: Request<B>, ) -> impl Future<Output = Result<Response<Body>, (Error, Option<Request<B>>)>> + Unpin
where B: Send,

Trait Implementations§

source§

impl<B> Debug for SendRequest<B>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<B> Service<Request<B>> for SendRequest<B>
where B: HttpBody + 'static,

§

type Response = Response<Body>

Responses given by the service.
§

type Error = Error

Errors produced by the service.
§

type Future = ResponseFuture

The future response value.
source§

fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
source§

fn call(&mut self, req: Request<B>) -> Self::Future

Process the request and return the response asynchronously. Read more

Auto Trait Implementations§

§

impl<B> Freeze for SendRequest<B>

§

impl<B> !RefUnwindSafe for SendRequest<B>

§

impl<B> Send for SendRequest<B>
where B: Send,

§

impl<B> Sync for SendRequest<B>
where B: Send,

§

impl<B> Unpin for SendRequest<B>

§

impl<B> !UnwindSafe for SendRequest<B>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, B1, B2> HttpService<B1> for T
where T: Service<Request<B1>, Response = Response<B2>>, B2: Body, <T as Service<Request<B1>>>::Error: Into<Box<dyn Error + Sync + Send>>,

§

type ResBody = B2

The HttpBody body of the http::Response.
§

type Error = <T as Service<Request<B1>>>::Error

The error type that can occur within this Service. Read more
§

type Future = <T as Service<Request<B1>>>::Future

The Future returned by this Service.
source§

fn poll_ready( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), <T as HttpService<B1>>::Error>>

source§

fn call(&mut self, req: Request<B1>) -> <T as HttpService<B1>>::Future

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<S, Target> Sealed<(Target,)> for S
where S: Service<Target>,

source§

impl<T, B1, B2> Sealed<B1> for T
where T: Service<Request<B1>, Response = Response<B2>>, B2: Body,