pingora_core::protocols::http::client

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<&Http1Session>

Source

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

Source

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

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<()>

Write a chunk of the request body.

Source

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

Signal that the request body has ended

Source

pub fn set_read_timeout(&mut self, timeout: 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: 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.

This is a noop for h2.

Source

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

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

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<&Stream>

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