pub struct Waiters { /* private fields */ }Expand description
Every parked client, oldest first.
The order is the order they blocked in and it is the order they are served
in, which is what makes a queue with several workers on it fair: two clients
blocked on the same key take the two elements a RPUSH q first second adds
in the order they arrived. A Vec is the right structure for that while the
list is short, and it is short, because a waiter is a client doing nothing.
Implementations§
Source§impl Waiters
impl Waiters
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
How many clients are parked, which is what INFO clients calls
blocked_clients.
Sourcepub fn mine(&self, thread: usize, into: &mut Vec<Parked>)
pub fn mine(&self, thread: usize, into: &mut Vec<Parked>)
Copy out the waiters thread has to answer, oldest first.
The caller works from the copy rather than from the list, because answering a waiter needs a connection’s reply buffer and the list is behind a lock that another thread is waiting on. It brings its own vector, which after the first parked client is a vector it already has the room in.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Waiters
impl RefUnwindSafe for Waiters
impl Send for Waiters
impl Sync for Waiters
impl Unpin for Waiters
impl UnsafeUnpin for Waiters
impl UnwindSafe for Waiters
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more