Trait trillium_server_common::Server
source · pub trait Server: Sized + Send + Sync + 'static {
type Transport: Transport;
const DESCRIPTION: &'static str;
// Required methods
fn accept(
&mut self,
) -> Pin<Box<dyn Future<Output = Result<Self::Transport>> + Send + '_>>;
fn info(&self) -> Info;
fn spawn(fut: impl Future<Output = ()> + Send + 'static);
fn block_on(fut: impl Future<Output = ()> + 'static);
// Provided methods
fn clean_up(self) -> Pin<Box<dyn Future<Output = ()> + Send + 'static>> { ... }
fn build_listener<A>(config: &Config<Self, A>) -> Self
where A: Acceptor<Self::Transport> { ... }
fn listener_from_tcp(_tcp: TcpListener) -> Self { ... }
fn listener_from_unix(_tcp: UnixListener) -> Self { ... }
fn handle_signals(
_stopper: Stopper,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'static>> { ... }
fn run<A, H>(config: Config<Self, A>, handler: H)
where A: Acceptor<Self::Transport>,
H: Handler { ... }
fn run_async<A, H>(
config: Config<Self, A>,
handler: H,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'static>>
where A: Acceptor<Self::Transport>,
H: Handler { ... }
}
Expand description
The server trait, for standard network-based server implementations.
Required Associated Types§
Required Associated Constants§
sourceconst DESCRIPTION: &'static str
const DESCRIPTION: &'static str
The description of this server, to be appended to the Info and potentially logged.
Required Methods§
sourcefn accept(
&mut self,
) -> Pin<Box<dyn Future<Output = Result<Self::Transport>> + Send + '_>>
fn accept( &mut self, ) -> Pin<Box<dyn Future<Output = Result<Self::Transport>> + Send + '_>>
Asynchronously return a single Self::Transport
from a
Self::Listener
. Must be implemented.
Provided Methods§
sourcefn clean_up(self) -> Pin<Box<dyn Future<Output = ()> + Send + 'static>>
fn clean_up(self) -> Pin<Box<dyn Future<Output = ()> + Send + 'static>>
After the server has shut down, perform any housekeeping, eg unlinking a unix socket.
sourcefn build_listener<A>(config: &Config<Self, A>) -> Self
fn build_listener<A>(config: &Config<Self, A>) -> Self
Build a listener from the config. The default logic for this
is described elsewhere. To override the default logic, server
implementations could potentially implement this directly. To
use this default logic, implement
Server::listener_from_tcp
and
Server::listener_from_unix
.
sourcefn listener_from_tcp(_tcp: TcpListener) -> Self
fn listener_from_tcp(_tcp: TcpListener) -> Self
Build a Self::Listener from a tcp listener. This is called by
the Server::build_listener
default implementation, and
is mandatory if the default implementation is used.
sourcefn listener_from_unix(_tcp: UnixListener) -> Self
fn listener_from_unix(_tcp: UnixListener) -> Self
Build a Self::Listener from a tcp listener. This is called by
the Server::build_listener
default implementation. You
will want to tag an implementation of this with #[cfg(unix)].
sourcefn handle_signals(
_stopper: Stopper,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'static>>
fn handle_signals( _stopper: Stopper, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'static>>
Implementation hook for listening for any os signals and
stopping the provided Stopper
. The returned future will be
spawned using Server::spawn