pub trait TransportListenerHandler: GhostHandler<TransportListener> {
fn handle_debug(&mut self) -> TransportListenerHandlerResult<Value>;
fn handle_bound_url(&mut self) -> TransportListenerHandlerResult<Url2>;
fn handle_create_channel(
&mut self,
url: Url2
) -> TransportListenerHandlerResult<(Url2, TransportChannelWrite, TransportChannelRead)>;
}
Expand description
Represents a transport binding for establishing connections. This api was designed mainly around supporting the QUIC transport. It should be applicable to other transports, but with some assumptions:
- Keep alive logic should be handled internally.
- Transport encryption is handled internally.
- See light-weight comments below on
create_channel
api.
Required methods
fn handle_debug(&mut self) -> TransportListenerHandlerResult<Value>
fn handle_debug(&mut self) -> TransportListenerHandlerResult<Value>
Grab a debugging internal state dump.
fn handle_bound_url(&mut self) -> TransportListenerHandlerResult<Url2>
fn handle_bound_url(&mut self) -> TransportListenerHandlerResult<Url2>
Retrieve the current url (address) this listener is bound to.
fn handle_create_channel(
&mut self,
url: Url2
) -> TransportListenerHandlerResult<(Url2, TransportChannelWrite, TransportChannelRead)>
fn handle_create_channel(
&mut self,
url: Url2
) -> TransportListenerHandlerResult<(Url2, TransportChannelWrite, TransportChannelRead)>
Attempt to establish an outgoing channel to a remote. Channels are expected to be very light-weight. This API was designed around QUIC bi-streams. If your low-level channels are not light-weight, consider implementing pooling/multiplex virtual channels to make this api light weight.