pub trait ManageConnection: Send + Sync + 'static {
    type Connection: Send + 'static;
    type Error: Error + 'static;

    // Required methods
    fn connect(&self) -> Result<Self::Connection, Self::Error>;
    fn is_valid(&self, conn: &mut Self::Connection) -> Result<(), Self::Error>;
    fn has_broken(&self, conn: &mut Self::Connection) -> bool;
}
Expand description

A trait which provides connection-specific functionality.

Required Associated Types§

source

type Connection: Send + 'static

The connection type this manager deals with.

source

type Error: Error + 'static

The error type returned by Connections.

Required Methods§

source

fn connect(&self) -> Result<Self::Connection, Self::Error>

Attempts to create a new connection.

source

fn is_valid(&self, conn: &mut Self::Connection) -> Result<(), Self::Error>

Determines if the connection is still connected to the database.

A standard implementation would check if a simple query like SELECT 1 succeeds.

source

fn has_broken(&self, conn: &mut Self::Connection) -> bool

Quickly determines if the connection is no longer usable.

This will be called synchronously every time a connection is returned to the pool, so it should not block. If it returns true, the connection will be discarded.

For example, an implementation might check if the underlying TCP socket has disconnected. Implementations that do not support this kind of fast health check may simply return false.

Implementors§

source§

impl<T> ManageConnection for ConnectionManager<T>where T: R2D2Connection + Send + 'static,

§

type Connection = T

§

type Error = Error