Trait pingora_core::apps::ServerApp
source · 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§
Object Safety§
This trait is not object safe.