Struct BoxedConnection
pub struct BoxedConnection(/* private fields */);Available on crate features
http-backend and http and std only.Expand description
A Connection behind dynamic dispatch, for where one type has to carry any transport.
Its streams, futures and reservations are boxed as well.
Implementations§
§impl BoxedConnection
impl BoxedConnection
pub fn new<C>(connection: C) -> BoxedConnectionwhere
C: ReserveBiStreams,
Trait Implementations§
§impl Clone for BoxedConnection
impl Clone for BoxedConnection
§fn clone(&self) -> BoxedConnection
fn clone(&self) -> BoxedConnection
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read more§impl Connection for BoxedConnection
impl Connection for BoxedConnection
type SendStream = BoxedSendStream
type RecvStream = Box<dyn RecvStream>
type CloseLease = Box<dyn Sync + Send>
fn open_bi( &self, ) -> impl Future<Output = Result<(BoxedSendStream, Box<dyn RecvStream>), ConnectionError>> + Send
fn open_uni( &self, ) -> impl Future<Output = Result<BoxedSendStream, ConnectionError>> + Send
§fn accept_bi(
&self,
) -> impl Future<Output = Result<(BoxedSendStream, Box<dyn RecvStream>), ConnectionError>> + Send
fn accept_bi( &self, ) -> impl Future<Output = Result<(BoxedSendStream, Box<dyn RecvStream>), ConnectionError>> + Send
Accept the next peer-initiated bidirectional stream.
Queued incoming streams remain available after connection closure, before the terminal error.
§fn accept_uni(
&self,
) -> impl Future<Output = Result<Box<dyn RecvStream>, ConnectionError>> + Send
fn accept_uni( &self, ) -> impl Future<Output = Result<Box<dyn RecvStream>, ConnectionError>> + Send
Accept the next peer-initiated unidirectional stream.
Queued incoming streams remain available after connection closure, before the terminal error,
so HTTP/3 can drain buffered control and QPACK data.
§fn side(&self) -> Side
fn side(&self) -> Side
Which stream IDs are locally initiated. Must match the IDs the streams report.
§fn handshake_confirmed(
&self,
) -> impl Future<Output = Result<(), ConnectionError>> + Send
fn handshake_confirmed( &self, ) -> impl Future<Output = Result<(), ConnectionError>> + Send
Application data can be sent without 0-RTT replay risk.
Before resolving successfully, publish the negotiated
Config::application_protocol in
NegotiatedTlsParameters in the shared extensions.§fn is_handshake_confirmed(&self) -> bool
fn is_handshake_confirmed(&self) -> bool
Whether
Self::handshake_confirmed resolved successfully; stays true after closing.fn close(&self, error_code: VarInt, reason: &[u8])
fn closed(&self) -> impl Future<Output = ConnectionError> + Send
fn close_reason(&self) -> Option<ConnectionError>
§fn available_streams(&self, dir: Dir) -> u64
fn available_streams(&self, dir: Dir) -> u64
Locally initiated streams that can be opened now.
§fn max_concurrent_streams(&self, dir: Dir) -> u64
fn max_concurrent_streams(&self, dir: Dir) -> u64
Streams this endpoint allows the peer to have open at once.
§fn remote_stream_limit(&self, dir: Dir) -> u64
fn remote_stream_limit(&self, dir: Dir) -> u64
Cumulative count of streams this endpoint allows the peer to open.
§fn local_stream_limit(&self, dir: Dir) -> u64
fn local_stream_limit(&self, dir: Dir) -> u64
Cumulative count of streams the peer allows this endpoint to open.
§fn early_data(&self) -> EarlyData
fn early_data(&self) -> EarlyData
Where this client’s early data stands.
§fn qlog_control(&self) -> Option<ConnectionQlogControl>
fn qlog_control(&self) -> Option<ConnectionQlogControl>
The qlog sink HTTP/3 events are written to.
§fn read_datagram(
&self,
) -> impl Future<Output = Result<Bytes, ConnectionError>> + Send
fn read_datagram( &self, ) -> impl Future<Output = Result<Bytes, ConnectionError>> + Send
Receive the next QUIC DATAGRAM payload.
Dropping a pending future must not discard a datagram; HTTP/3 selects this future
alongside other connection work.
fn max_datagram_size(&self) -> Option<usize>
§fn datagram_receive_enabled(&self) -> bool
fn datagram_receive_enabled(&self) -> bool
The peer may send QUIC DATAGRAM frames to this endpoint.
§fn received_datagrams(&self) -> usize
fn received_datagrams(&self) -> usize
Datagrams received and not yet taken by
Self::read_datagram.§fn datagram_send_ready(
&self,
) -> impl Future<Output = ()> + Send + 'static + use<>
fn datagram_send_ready( &self, ) -> impl Future<Output = ()> + Send + 'static + use<>
Room on the datagram send queue, or the connection closed. Registered when called:
create it before a send that may be refused as blocked and await it after the refusal.
§fn close_lease(&self) -> Box<dyn Sync + Send>
fn close_lease(&self) -> Box<dyn Sync + Send>
Holds off this connection’s close at a graceful shutdown until dropped, so a tunnel
can still send what it carries.
§impl Debug for BoxedConnection
impl Debug for BoxedConnection
§impl ExtensionsRef for BoxedConnection
impl ExtensionsRef for BoxedConnection
§fn extensions(&self) -> &Extensions
fn extensions(&self) -> &Extensions
Get reference to the underlying
Extensions store§impl ReserveBiStreams for BoxedConnection
impl ReserveBiStreams for BoxedConnection
type Reservation = BoxedBiReservation<BoxedSendStream, Box<dyn RecvStream>>
§fn try_reserve_bi(
&self,
) -> Result<Option<<BoxedConnection as ReserveBiStreams>::Reservation>, ConnectionError>
fn try_reserve_bi( &self, ) -> Result<Option<<BoxedConnection as ReserveBiStreams>::Reservation>, ConnectionError>
None before the handshake completes or while credit is exhausted.§fn subscribe_bi_stream_budget(&self, listener: Weak<dyn ChangeListener>)
fn subscribe_bi_stream_budget(&self, listener: Weak<dyn ChangeListener>)
Notify
listener when locally initiated bidirectional stream credit becomes available,
the handshake completes, or the connection closes, until the listener is dropped.
Acquiring or consuming a reservation need not notify listeners. Subscribe before trying
to reserve credit to avoid missing a notification.Auto Trait Implementations§
impl !RefUnwindSafe for BoxedConnection
impl !UnwindSafe for BoxedConnection
impl Freeze for BoxedConnection
impl Send for BoxedConnection
impl Sync for BoxedConnection
impl Unpin for BoxedConnection
impl UnsafeUnpin for BoxedConnection
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> ForwardedClientExt for Twhere
T: ExtensionsRef + ?Sized,
impl<T> ForwardedClientExt for Twhere
T: ExtensionsRef + ?Sized,
§fn forwarded_client(&self) -> Option<&ForwardedElement>
fn forwarded_client(&self) -> Option<&ForwardedElement>
The element describing the client.
§fn forwarded_client_ip(&self) -> Option<IpAddr>
fn forwarded_client_ip(&self) -> Option<IpAddr>
The client’s IP, from its
for node.§fn forwarded_client_socket_addr(&self) -> Option<SocketAddress>
fn forwarded_client_socket_addr(&self) -> Option<SocketAddress>
The client’s IP and port, from its
for node.§fn forwarded_client_host(&self) -> Option<&ForwardedAuthority>
fn forwarded_client_host(&self) -> Option<&ForwardedAuthority>
The host the client asked for.
§fn forwarded_client_proto(&self) -> Option<ForwardedProtocol>
fn forwarded_client_proto(&self) -> Option<ForwardedProtocol>
The protocol the client used.
§fn forwarded_client_version(&self) -> Option<ForwardedVersion>
fn forwarded_client_version(&self) -> Option<ForwardedVersion>
The HTTP version the client used.
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§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> ⓘ
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 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> ⓘ
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Create a new
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more