Backend

Trait Backend 

Source
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.

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.

Implementors§