Struct de_net::connection::book::ConnectionBook
source · pub(super) struct ConnectionBook<T: Connection> {
next_index: usize,
addrs: Vec<SocketAddr>,
records: AHashMap<SocketAddr, ConnectionRecord<T>>,
}
Expand description
Bookkeeping of per connection data.
It behaves like a connection storage and a custom cyclic connection “iterator”.
Fields§
§next_index: usize
§addrs: Vec<SocketAddr>
§records: AHashMap<SocketAddr, ConnectionRecord<T>>
Implementations§
source§impl<T: Connection> ConnectionBook<T>
impl<T: Connection> ConnectionBook<T>
pub(super) fn new() -> Self
sourcepub(super) fn update<E>(
&mut self,
time: Instant,
addr: SocketAddr,
value: E
) -> &mut Twhere
E: Fn() -> T,
pub(super) fn update<E>(
&mut self,
time: Instant,
addr: SocketAddr,
value: E
) -> &mut Twhere
E: Fn() -> T,
Ensures that a connection record exists and its last update time is
time
. Mutable reference to the connection value object is returned.
sourcepub(super) fn clean(&mut self, time: Instant)
pub(super) fn clean(&mut self, time: Instant)
Forget all connections which:
- has not been actively used for longer than
MAX_CONN_AGE
, - have no pending activity.
sourcepub(super) fn next(&mut self) -> Option<(SocketAddr, &mut T)>
pub(super) fn next(&mut self) -> Option<(SocketAddr, &mut T)>
Yields an element (one by one) from the book. Once all elements are yielded, None is returned and the “iterator” is restarted.
fn next_inner(&mut self) -> Option<(SocketAddr, &mut ConnectionRecord<T>)>
sourcepub(super) fn remove_current(&mut self)
pub(super) fn remove_current(&mut self)
Remove last yielded item by Self::next
from the book.
§Panics
-
Panics if
Self::next
yielded None when last called. -
May panic if it called repeatedly between individual calls to
Self::next
.
Auto Trait Implementations§
impl<T> Freeze for ConnectionBook<T>
impl<T> RefUnwindSafe for ConnectionBook<T>where
T: RefUnwindSafe,
impl<T> Send for ConnectionBook<T>where
T: Send,
impl<T> Sync for ConnectionBook<T>where
T: Sync,
impl<T> Unpin for ConnectionBook<T>where
T: Unpin,
impl<T> UnwindSafe for ConnectionBook<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more