pub struct RequestStream<S, B> { /* private fields */ }h3 only.Expand description
Manage request and response transfer for an incoming request
The RequestStream struct is used to send and/or receive
information from the client.
After sending the final response, call RequestStream::finish to close the stream.
Implementations§
Source§impl<S, B> RequestStream<S, B>where
S: RecvStream,
B: Buf,
impl<S, B> RequestStream<S, B>where
S: RecvStream,
B: Buf,
Sourcepub async fn recv_data(&mut self) -> Result<Option<impl Buf>, StreamError>
pub async fn recv_data(&mut self) -> Result<Option<impl Buf>, StreamError>
Receive data sent from the client
Sourcepub fn poll_recv_data(
&mut self,
cx: &mut Context<'_>,
) -> Poll<Result<Option<impl Buf>, StreamError>>
pub fn poll_recv_data( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<Option<impl Buf>, StreamError>>
Poll for data sent from the client
Sourcepub async fn recv_trailers(&mut self) -> Result<Option<HeaderMap>, StreamError>
pub async fn recv_trailers(&mut self) -> Result<Option<HeaderMap>, StreamError>
Receive an optional set of trailers for the request
Sourcepub fn poll_recv_trailers(
&mut self,
cx: &mut Context<'_>,
) -> Poll<Result<Option<HeaderMap>, StreamError>>
pub fn poll_recv_trailers( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<Option<HeaderMap>, StreamError>>
Poll for an optional set of trailers for the request
Sourcepub fn stop_sending(&mut self, error_code: Code)
pub fn stop_sending(&mut self, error_code: Code)
Tell the peer to stop sending into the underlying QUIC stream
Source§impl<S, B> RequestStream<S, B>where
S: SendStream<B>,
B: Buf,
impl<S, B> RequestStream<S, B>where
S: SendStream<B>,
B: Buf,
Sourcepub async fn send_response(
&mut self,
resp: Response<()>,
) -> Result<(), StreamError>
pub async fn send_response( &mut self, resp: Response<()>, ) -> Result<(), StreamError>
Send the HTTP/3 response
This should be called before trying to send any data with
RequestStream::send_data.
Sourcepub async fn send_data(&mut self, buf: B) -> Result<(), StreamError>
pub async fn send_data(&mut self, buf: B) -> Result<(), StreamError>
Send some data on the response body.
Sourcepub fn stop_stream(&mut self, error_code: Code)
pub fn stop_stream(&mut self, error_code: Code)
Stop a stream with an error code
The code can be Code::H3_NO_ERROR.
Sourcepub async fn send_trailers(
&mut self,
trailers: HeaderMap,
) -> Result<(), StreamError>
pub async fn send_trailers( &mut self, trailers: HeaderMap, ) -> Result<(), StreamError>
Send a set of trailers to end the response.
RequestStream::finish must be called to finalize a request.
Sourcepub async fn finish(&mut self) -> Result<(), StreamError>
pub async fn finish(&mut self) -> Result<(), StreamError>
End the response without trailers.
RequestStream::finish must be called to finalize a request.
Source§impl<S, B> RequestStream<S, B>where
S: BidiStream<B>,
B: Buf,
impl<S, B> RequestStream<S, B>where
S: BidiStream<B>,
B: Buf,
Sourcepub fn split(
self,
) -> (RequestStream<<S as BidiStream<B>>::SendStream, B>, RequestStream<<S as BidiStream<B>>::RecvStream, B>)
pub fn split( self, ) -> (RequestStream<<S as BidiStream<B>>::SendStream, B>, RequestStream<<S as BidiStream<B>>::RecvStream, B>)
Splits the Request-Stream into send and receive. This can be used the send and receive data on different tasks.
Trait Implementations§
Source§impl<S, B> AsMut<RequestStream<S, B>> for RequestStream<S, B>
impl<S, B> AsMut<RequestStream<S, B>> for RequestStream<S, B>
Source§fn as_mut(&mut self) -> &mut RequestStream<S, B>
fn as_mut(&mut self) -> &mut RequestStream<S, B>
Source§impl<S, B> CloseStream for RequestStream<S, B>
impl<S, B> CloseStream for RequestStream<S, B>
Source§fn handle_connection_error_on_stream(
&mut self,
internal_error: InternalConnectionError,
) -> StreamError
fn handle_connection_error_on_stream( &mut self, internal_error: InternalConnectionError, ) -> StreamError
Source§fn handle_quic_stream_error(&self, error: StreamErrorIncoming) -> StreamError
fn handle_quic_stream_error(&self, error: StreamErrorIncoming) -> StreamError
Source§fn check_peer_connection_closing(&self) -> Option<StreamError>
fn check_peer_connection_closing(&self) -> Option<StreamError>
Source§impl<S, B> ConnectionState for RequestStream<S, B>
impl<S, B> ConnectionState for RequestStream<S, B>
Source§fn get_conn_error(&self) -> Option<ErrorOrigin>
fn get_conn_error(&self) -> Option<ErrorOrigin>
Source§fn set_conn_error(&self, error: ErrorOrigin) -> ErrorOrigin
fn set_conn_error(&self, error: ErrorOrigin) -> ErrorOrigin
Source§fn set_conn_error_and_wake<T>(&self, error: T) -> ErrorOriginwhere
T: Into<ErrorOrigin>,
fn set_conn_error_and_wake<T>(&self, error: T) -> ErrorOriginwhere
T: Into<ErrorOrigin>,
Source§fn set_closing(&self)
fn set_closing(&self)
Source§fn is_closing(&self) -> bool
fn is_closing(&self) -> bool
Source§fn set_settings(&self, settings: Settings)
fn set_settings(&self, settings: Settings)
Source§fn waker(&self) -> &AtomicWaker
fn waker(&self) -> &AtomicWaker
Auto Trait Implementations§
impl<S, B> !Freeze for RequestStream<S, B>
impl<S, B> !RefUnwindSafe for RequestStream<S, B>
impl<S, B> Send for RequestStream<S, B>
impl<S, B> Sync for RequestStream<S, B>
impl<S, B> Unpin for RequestStream<S, B>
impl<S, B> !UnwindSafe for RequestStream<S, B>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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