HttpSession

Enum HttpSession 

Source
pub enum HttpSession {
    H1(HttpSession),
    H2(Http2Session),
}
Expand description

A type for Http client session. It can be either an Http1 connection or an Http2 stream.

Variants§

Implementations§

Source§

impl HttpSession

Source

pub fn as_http1(&self) -> Option<&HttpSession>

Source

pub fn as_http2(&self) -> Option<&Http2Session>

Source

pub async fn write_request_header( &mut self, req: Box<RequestHeader>, ) -> Result<(), Box<Error>>

Write the request header to the server After the request header is sent. The caller can either start reading the response or sending request body if any.

Source

pub async fn write_request_body( &mut self, data: Bytes, end: bool, ) -> Result<(), Box<Error>>

Write a chunk of the request body.

Source

pub async fn finish_request_body(&mut self) -> Result<(), Box<Error>>

Signal that the request body has ended

Source

pub fn set_read_timeout(&mut self, timeout: Option<Duration>)

Set the read timeout for reading header and body.

The timeout is per read operation, not on the overall time reading the entire response

Source

pub fn set_write_timeout(&mut self, timeout: Option<Duration>)

Set the write timeout for writing header and body.

The timeout is per write operation, not on the overall time writing the entire request.

Source

pub async fn read_response_header(&mut self) -> Result<(), Box<Error>>

Read the response header from the server For http1, this function can be called multiple times, if the headers received are just informational headers.

Source

pub async fn read_response_body(&mut self) -> Result<Option<Bytes>, Box<Error>>

Read response body

None when no more body to read.

Source

pub fn response_done(&mut self) -> bool

No (more) body to read

Source

pub async fn shutdown(&mut self)

Give up the http session abruptly. For H1 this will close the underlying connection For H2 this will send RST_STREAM frame to end this stream if the stream has not ended at all

Source

pub fn response_header(&self) -> Option<&ResponseHeader>

Get the response header of the server

None if the response header is not read yet.

Source

pub fn digest(&self) -> Option<&Digest>

Return the Digest of the connection

For reused connection, the timing in the digest will reflect its initial handshakes The caller should check if the connection is reused to avoid misuse of the timing field.

Source

pub fn digest_mut(&mut self) -> Option<&mut Digest>

Return a mutable Digest reference for the connection.

Will return None if this is an H2 session and multiple streams are open.

Source

pub fn server_addr(&self) -> Option<&SocketAddr>

Return the server (peer) address of the connection.

Source

pub fn client_addr(&self) -> Option<&SocketAddr>

Return the client (local) address of the connection.

Source

pub fn stream(&self) -> Option<&Box<dyn IO>>

Get the reference of the Stream that this HTTP/1 session is operating upon. None if the HTTP session is over H2

Auto Trait Implementations§

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> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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>,

Source§

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> Upcastable for T
where T: Any + Send + Sync + 'static,

Source§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
Source§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
Source§

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

upcast boxed dyn
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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