Trait r2d2::ManageConnection
source · [−]pub trait ManageConnection: Send + Sync + 'static {
type Connection: Send + 'static;
type Error: Error + 'static;
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
sourcetype Connection: Send + 'static
type Connection: Send + 'static
The connection type this manager deals with.
Required Methods
sourcefn connect(&self) -> Result<Self::Connection, Self::Error>
fn connect(&self) -> Result<Self::Connection, Self::Error>
Attempts to create a new connection.
sourcefn is_valid(&self, conn: &mut Self::Connection) -> Result<(), Self::Error>
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.
sourcefn has_broken(&self, conn: &mut Self::Connection) -> bool
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
.