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>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: '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>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: '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>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: '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>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: '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>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: '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>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: '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>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: '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>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: '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>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: '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>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: '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>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: '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>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: '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>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: '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>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: '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>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: '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.
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.