Skip to main content

PoolNode

Struct PoolNode 

Source
pub struct PoolNode<T> { /* private fields */ }
Expand description

A pool of exchangeable items

Implementations§

Source§

impl<T> PoolNode<T>

Source

pub fn new() -> Self

Create a new PoolNode

Source

pub fn get_any(&self) -> Option<(i32, T)>

Get any item from the pool

Source

pub fn insert(&self, id: i32, conn: T)

Insert an item with the given unique ID into the pool

Source

pub fn is_empty(&self) -> bool

Returns true if the pool node contains no connections in either the hot queue or the overflow hash map.

§Concurrency note

This check is not atomic across the two internal stores (hot_queue and connections). Between checking one and the other, a concurrent insert or get_any could change the state. This is acceptable because callers use is_empty only as a hint to attempt cleanup, and always re-verify under an exclusive (write) lock before actually removing the node from the parent pool HashMap. A false-negative simply defers cleanup to the next opportunity; a false-positive is largely mitigated by the re-check (see ConnectionPool::try_remove_empty_node for residual race-window analysis).

Source

pub fn remove(&self, id: i32) -> Option<T>

Remove the item associated with the id from the pool. The item is returned if it is found and removed.

Auto Trait Implementations§

§

impl<T> !Freeze for PoolNode<T>

§

impl<T> !RefUnwindSafe for PoolNode<T>

§

impl<T> Send for PoolNode<T>

§

impl<T> Sync for PoolNode<T>

§

impl<T> Unpin for PoolNode<T>

§

impl<T> UnsafeUnpin for PoolNode<T>

§

impl<T> UnwindSafe for PoolNode<T>

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.