pub trait ServerApp {
// Required method
fn process_new<'life0, 'life1, 'async_trait>(
self: &'life0 Arc<Self>,
session: Stream,
shutdown: &'life1 ShutdownWatch,
) -> Pin<Box<dyn Future<Output = Option<Stream>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
// Provided method
fn cleanup<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait { ... }
}Expand description
This trait defines the interface of a transport layer (TCP or TLS) application.
Required Methods§
Sourcefn process_new<'life0, 'life1, 'async_trait>(
self: &'life0 Arc<Self>,
session: Stream,
shutdown: &'life1 ShutdownWatch,
) -> Pin<Box<dyn Future<Output = Option<Stream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn process_new<'life0, 'life1, 'async_trait>(
self: &'life0 Arc<Self>,
session: Stream,
shutdown: &'life1 ShutdownWatch,
) -> Pin<Box<dyn Future<Output = Option<Stream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Whenever a new connection is established, this function will be called with the established
Stream object provided.
The application can do whatever it wants with the session.
After processing the session, if the session’s connection is reusable, This function
can return it to the service by returning Some(session). The returned session will be
fed to another Self::process_new() for another round of processing.
If not reusable, None should be returned.
The shutdown argument will change from false to true when the server receives a
signal to shutdown. This argument allows the application to react accordingly.
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.