pub trait ConnectionPool:
Send
+ Sync
+ 'static {
type NewConnectionConfig: NewConnectionConfig;
type BaseClientConnection: BaseClientConnection;
// Required methods
fn add_connection(
&mut self,
config: &Self::NewConnectionConfig,
addr: &SocketAddr,
) -> usize;
fn num_connections(&self) -> usize;
fn get(
&self,
index: usize,
) -> Result<Arc<Self::BaseClientConnection>, ConnectionPoolError>;
fn create_pool_entry(
&self,
config: &Self::NewConnectionConfig,
addr: &SocketAddr,
) -> Arc<Self::BaseClientConnection> ⓘ;
// Provided methods
fn borrow_connection(&self) -> Arc<Self::BaseClientConnection> ⓘ { ... }
fn check_pool_status(&self, required_pool_size: usize) -> PoolStatus { ... }
}Required Associated Types§
type NewConnectionConfig: NewConnectionConfig
type BaseClientConnection: BaseClientConnection
Required Methods§
Sourcefn add_connection(
&mut self,
config: &Self::NewConnectionConfig,
addr: &SocketAddr,
) -> usize
fn add_connection( &mut self, config: &Self::NewConnectionConfig, addr: &SocketAddr, ) -> usize
Add a connection to the pool and return its index
Sourcefn num_connections(&self) -> usize
fn num_connections(&self) -> usize
Get the number of current connections in the pool
Sourcefn get(
&self,
index: usize,
) -> Result<Arc<Self::BaseClientConnection>, ConnectionPoolError>
fn get( &self, index: usize, ) -> Result<Arc<Self::BaseClientConnection>, ConnectionPoolError>
Get a connection based on its index in the pool, without checking if the
fn create_pool_entry( &self, config: &Self::NewConnectionConfig, addr: &SocketAddr, ) -> Arc<Self::BaseClientConnection> ⓘ
Provided Methods§
Sourcefn borrow_connection(&self) -> Arc<Self::BaseClientConnection> ⓘ
fn borrow_connection(&self) -> Arc<Self::BaseClientConnection> ⓘ
Get a connection from the pool. It must have at least one connection in the pool. This randomly picks a connection in the pool.
Sourcefn check_pool_status(&self, required_pool_size: usize) -> PoolStatus
fn check_pool_status(&self, required_pool_size: usize) -> PoolStatus
Check if we need to create a new connection. If the count of the connections is smaller than the pool size and if there is no connection at all.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".