Skip to main content

cdrs/cluster/
mod.rs

1use r2d2;
2use std::cell;
3
4#[cfg(feature = "ssl")]
5mod config_ssl;
6#[cfg(feature = "rust-tls")]
7mod config_rustls;
8mod config_tcp;
9mod generic_connection_pool;
10mod pager;
11pub mod session;
12#[cfg(feature = "ssl")]
13mod ssl_connection_pool;
14#[cfg(feature = "rust-tls")]
15mod rustls_connection_pool;
16mod tcp_connection_pool;
17
18#[cfg(feature = "ssl")]
19pub use crate::cluster::config_ssl::{ClusterSslConfig, NodeSslConfig, NodeSslConfigBuilder};
20#[cfg(feature = "rust-tls")]
21pub use crate::cluster::config_rustls::{ClusterRustlsConfig, NodeRustlsConfig, NodeRustlsConfigBuilder};
22pub use crate::cluster::config_tcp::{ClusterTcpConfig, NodeTcpConfig, NodeTcpConfigBuilder};
23pub use crate::cluster::pager::{PagerState, QueryPager, SessionPager};
24#[cfg(feature = "ssl")]
25pub use crate::cluster::ssl_connection_pool::{
26    new_ssl_pool, SslConnectionPool, SslConnectionsManager,
27};
28#[cfg(feature = "rust-tls")]
29pub use crate::cluster::rustls_connection_pool::{
30    new_rustls_pool, RustlsConnectionPool, RustlsConnectionsManager,
31};
32pub use crate::cluster::tcp_connection_pool::{
33    new_tcp_pool, startup, TcpConnectionPool, TcpConnectionsManager,
34};
35pub(crate) use generic_connection_pool::ConnectionPool;
36
37use crate::compression::Compression;
38use crate::error;
39use crate::query::{BatchExecutor, ExecExecutor, PrepareExecutor, QueryExecutor};
40use crate::transport::CDRSTransport;
41
42/// `GetConnection` trait provides a unified interface for Session to get a connection
43/// from a load balancer
44pub trait GetConnection<
45    T: CDRSTransport + Send + Sync + 'static,
46    M: r2d2::ManageConnection<Connection = cell::RefCell<T>, Error = error::Error>,
47>
48{
49    /// Returns connection from a load balancer.
50    fn get_connection(&self) -> Option<r2d2::PooledConnection<M>>;
51}
52
53/// `GetCompressor` trait provides a unified interface for Session to get a compressor
54/// for further decompressing received data.
55pub trait GetCompressor<'a> {
56    /// Returns actual compressor.
57    fn get_compressor(&self) -> Compression;
58}
59
60/// `CDRSSession` trait wrap ups whole query functionality. Use it only if whole query
61/// machinery is needed and direct sub traits otherwise.
62pub trait CDRSSession<
63    'a,
64    T: CDRSTransport + 'static,
65    M: r2d2::ManageConnection<Connection = cell::RefCell<T>, Error = error::Error>,
66>:
67    GetCompressor<'static>
68    + GetConnection<T, M>
69    + QueryExecutor<T, M>
70    + PrepareExecutor<T, M>
71    + ExecExecutor<T, M>
72    + BatchExecutor<T, M>
73{
74}