pub trait Backend: Debug + Send + Sync + Sized + 'static {
type Error: Error + Send + Sync;
type ClientData: Send + Sync + Debug;
// Provided methods
fn configure(
config: ServerConfiguration<Self>
) -> Result<ServerConfiguration<Self>, BackendError<Self::Error>> { ... }
fn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 CustomServer<Self>
) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait { ... }
fn client_connected<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
client: &'life1 ConnectedClient<Self>,
server: &'life2 CustomServer<Self>
) -> Pin<Box<dyn Future<Output = Result<ConnectionHandling, BackendError<Self::Error>>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait { ... }
fn client_disconnected<'life0, 'life1, 'async_trait>(
&'life0 self,
client: ConnectedClient<Self>,
server: &'life1 CustomServer<Self>
) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait { ... }
fn client_authenticated<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
client: ConnectedClient<Self>,
session: &'life1 Session,
server: &'life2 CustomServer<Self>
) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait { ... }
fn client_session_ended<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session: Session,
client: &'life1 ConnectedClient<Self>,
disconnecting: bool,
server: &'life2 CustomServer<Self>
) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait { ... }
}
Expand description
Tailors the behavior of a server to your needs.
Required Associated Types§
sourcetype Error: Error + Send + Sync
type Error: Error + Send + Sync
The error type that can be returned from the backend functions. If a
backend doesn’t need an error type, Infallible
can be used.
sourcetype ClientData: Send + Sync + Debug
type ClientData: Send + Sync + Debug
The type of data that can be stored in
ConnectedClient::set_client_data
. This allows state to be stored
associated with each connected client.
Provided Methods§
sourcefn configure(
config: ServerConfiguration<Self>
) -> Result<ServerConfiguration<Self>, BackendError<Self::Error>>
fn configure( config: ServerConfiguration<Self> ) -> Result<ServerConfiguration<Self>, BackendError<Self::Error>>
Invoked once before the server is initialized.
sourcefn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 CustomServer<Self>
) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn initialize<'life0, 'life1, 'async_trait>( &'life0 self, server: &'life1 CustomServer<Self> ) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,
Invoked once after initialization during
Server::open
/CustomServer::open
.
sourcefn client_connected<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
client: &'life1 ConnectedClient<Self>,
server: &'life2 CustomServer<Self>
) -> Pin<Box<dyn Future<Output = Result<ConnectionHandling, BackendError<Self::Error>>> + Send + 'async_trait, Global>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn client_connected<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, client: &'life1 ConnectedClient<Self>, server: &'life2 CustomServer<Self> ) -> Pin<Box<dyn Future<Output = Result<ConnectionHandling, BackendError<Self::Error>>> + Send + 'async_trait, Global>>where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, Self: 'async_trait,
A client disconnected from the server. This is invoked before authentication has been performed.
sourcefn client_disconnected<'life0, 'life1, 'async_trait>(
&'life0 self,
client: ConnectedClient<Self>,
server: &'life1 CustomServer<Self>
) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn client_disconnected<'life0, 'life1, 'async_trait>( &'life0 self, client: ConnectedClient<Self>, server: &'life1 CustomServer<Self> ) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,
A client disconnected from the server.
sourcefn client_authenticated<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
client: ConnectedClient<Self>,
session: &'life1 Session,
server: &'life2 CustomServer<Self>
) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn client_authenticated<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, client: ConnectedClient<Self>, session: &'life1 Session, server: &'life2 CustomServer<Self> ) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, Self: 'async_trait,
A client successfully authenticated.
sourcefn client_session_ended<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session: Session,
client: &'life1 ConnectedClient<Self>,
disconnecting: bool,
server: &'life2 CustomServer<Self>
) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn client_session_ended<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, session: Session, client: &'life1 ConnectedClient<Self>, disconnecting: bool, server: &'life2 CustomServer<Self> ) -> Pin<Box<dyn Future<Output = Result<(), BackendError<Self::Error>>> + Send + 'async_trait, Global>>where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, Self: 'async_trait,
A client’s session has ended.
If disconnecting
is true, the session is ending because the client is
in the process of disconnecting.