Skip to main content

ConnectionCache

Struct ConnectionCache 

Source
pub struct ConnectionCache<C> { /* private fields */ }
Expand description

Thread-safe connection cache bound to exact host topology revisions.

The cache does not open or close connections. Drivers own those lifecycle actions and receive removed handles from invalidation and eviction methods.

Implementations§

Source§

impl<C> ConnectionCache<C>

Source

pub fn new() -> Self

Creates an empty cache.

Source

pub fn insert(&self, host: &HostRecord, connection: C) -> Option<Arc<C>>

Inserts a connection for one exact host revision.

Returns the replaced handle when the same key already existed.

Source

pub fn get(&self, host: &HostRecord) -> Option<Arc<C>>

Returns a connection only when the host revision matches exactly.

Source

pub fn remove(&self, host: &HostRecord) -> Option<Arc<C>>

Removes one exact host revision.

Source

pub fn invalidate_host(&self, host: &HostId) -> Vec<Arc<C>>

Removes every cached revision for one host.

Source

pub fn retain_snapshot(&self, snapshot: &TopologySnapshot) -> Vec<Arc<C>>

Removes keys absent from the supplied topology snapshot.

A host whose endpoint changed has a new revision and therefore evicts the old cached connection even when its stable host identity is unchanged.

Source

pub fn len(&self) -> usize

Returns the number of cached revision keys.

Source

pub fn is_empty(&self) -> bool

Returns whether the cache has no entries.

Source

pub fn keys(&self) -> Vec<PoolKey>

Returns sorted cached keys for metrics or diagnostics.

Trait Implementations§

Source§

impl<C> Default for ConnectionCache<C>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<C> !Freeze for ConnectionCache<C>

§

impl<C> RefUnwindSafe for ConnectionCache<C>

§

impl<C> Send for ConnectionCache<C>
where C: Sync + Send,

§

impl<C> Sync for ConnectionCache<C>
where C: Sync + Send,

§

impl<C> Unpin for ConnectionCache<C>

§

impl<C> UnsafeUnpin for ConnectionCache<C>

§

impl<C> UnwindSafe for ConnectionCache<C>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.