close method
void
close()
Closes the queue: blocks further pushes, fails every blocked producer and consumer with StateError, and lets consumers drain any already-buffered items (a pull on the empty closed queue then errors). Buffered items are NOT discarded — drain them before closing if they matter. Audited: 2026-06-12 11:26 EDT
Implementation
void close() {
_isClosed = true;
for (final (_, Completer<void> completer) in _pushWaiters) {
completer.completeError(StateError('BoundedWorkQueue closed'), StackTrace.current);
}
_pushWaiters.clear();
for (final Completer<T> completer in _pullWaiters) {
completer.completeError(StateError('BoundedWorkQueue closed'), StackTrace.current);
}
_pullWaiters.clear();
}