Improves the representation of side effects
This commit is contained in:
parent
816b78c0d9
commit
a156f72bfb
1 changed files with 18 additions and 6 deletions
|
@ -492,7 +492,9 @@ where
|
||||||
if state.read_pos != state.write_pos || state.full {
|
if state.read_pos != state.write_pos || state.full {
|
||||||
if state.full {
|
if state.full {
|
||||||
state.full = false;
|
state.full = false;
|
||||||
state.senders_waker.take().map(|w| w.wake());
|
if let Some(w) = state.senders_waker.take() {
|
||||||
|
w.wake();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
let message =
|
let message =
|
||||||
unsafe { (state.buf[state.read_pos]).assume_init_mut().get().read() };
|
unsafe { (state.buf[state.read_pos]).assume_init_mut().get().read() };
|
||||||
|
@ -502,7 +504,9 @@ where
|
||||||
Err(TryRecvError::Empty)
|
Err(TryRecvError::Empty)
|
||||||
} else {
|
} else {
|
||||||
state.closed = true;
|
state.closed = true;
|
||||||
state.senders_waker.take().map(|w| w.wake());
|
if let Some(w) = state.senders_waker.take() {
|
||||||
|
w.wake();
|
||||||
|
}
|
||||||
Err(TryRecvError::Closed)
|
Err(TryRecvError::Closed)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -521,7 +525,9 @@ where
|
||||||
if state.write_pos == state.read_pos {
|
if state.write_pos == state.read_pos {
|
||||||
state.full = true;
|
state.full = true;
|
||||||
}
|
}
|
||||||
state.receiver_waker.take().map(|w| w.wake());
|
if let Some(w) = state.receiver_waker.take() {
|
||||||
|
w.wake();
|
||||||
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
Err(TrySendError::Full(message))
|
Err(TrySendError::Full(message))
|
||||||
|
@ -535,7 +541,9 @@ where
|
||||||
fn close(&mut self) {
|
fn close(&mut self) {
|
||||||
let state = &mut self.state;
|
let state = &mut self.state;
|
||||||
self.mutex.lock(|_| {
|
self.mutex.lock(|_| {
|
||||||
state.receiver_waker.take().map(|w| w.wake());
|
if let Some(w) = state.receiver_waker.take() {
|
||||||
|
w.wake();
|
||||||
|
}
|
||||||
state.closing = true;
|
state.closing = true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -558,7 +566,9 @@ where
|
||||||
self.mutex.lock(|_| {
|
self.mutex.lock(|_| {
|
||||||
if state.receiver_registered {
|
if state.receiver_registered {
|
||||||
state.closed = true;
|
state.closed = true;
|
||||||
state.senders_waker.take().map(|w| w.wake());
|
if let Some(w) = state.senders_waker.take() {
|
||||||
|
w.wake();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
state.receiver_registered = false;
|
state.receiver_registered = false;
|
||||||
})
|
})
|
||||||
|
@ -577,7 +587,9 @@ where
|
||||||
assert!(state.senders_registered > 0);
|
assert!(state.senders_registered > 0);
|
||||||
state.senders_registered = state.senders_registered - 1;
|
state.senders_registered = state.senders_registered - 1;
|
||||||
if state.senders_registered == 0 {
|
if state.senders_registered == 0 {
|
||||||
state.receiver_waker.take().map(|w| w.wake());
|
if let Some(w) = state.receiver_waker.take() {
|
||||||
|
w.wake();
|
||||||
|
}
|
||||||
state.closing = true;
|
state.closing = true;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Reference in a new issue