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§

source

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.

source

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§

source

fn configure( config: ServerConfiguration<Self> ) -> Result<ServerConfiguration<Self>, BackendError<Self::Error>>

Invoked once before the server is initialized.

source

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.

source

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.

source

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.

source

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.

source

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.

Implementors§