BoundedWorkQueue<T> class

A bounded FIFO channel of T with blocking push/pull and backpressure.

Constructors

BoundedWorkQueue({required int maxSize})
Creates a queue holding at most maxSize buffered items (maxSize ≥ 1). Audited: 2026-06-12 11:26 EDT

Properties

hashCode → int
The hash code for this object.
no setterinherited
isClosed → bool
Whether close has been called.
no setter
isFull → bool
Whether the buffer is at capacity (the next push will block). Audited: 2026-06-12 11:26 EDT
no setter
length → int
Buffered (not-yet-pulled) item count. Audited: 2026-06-12 11:26 EDT
no setter
maxSize → int
Maximum number of items buffered before push starts applying backpressure.
final
pendingConsumers → int
Consumers currently blocked waiting for an item. Audited: 2026-06-12 11:26 EDT
no setter
pendingProducers → int
Producers currently blocked waiting for a free slot. Audited: 2026-06-12 11:26 EDT
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

close() → void
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
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
pull() → Future<T>
Dequeues the next item, returning a future that completes once one is available. When the buffer is empty the future stays pending until a push arrives. If the queue is closed AND empty, completes with StateError. Audited: 2026-06-12 11:26 EDT
push(T item) → Future<void>
Enqueues item, returning a future that completes once it is buffered (or handed directly to a waiting consumer). When the buffer is full the future stays pending until a pull frees a slot — the backpressure signal. The future completes with StateError if the queue is (or becomes) closed. Audited: 2026-06-12 11:26 EDT
toString() → String
A string representation of this object.
override
tryPull() → T?
Non-blocking pull: returns the next buffered item, or null if the buffer is empty. NOTE: with a nullable T a buffered null is indistinguishable from "empty" here — use pull when T is nullable. Audited: 2026-06-12 11:26 EDT
tryPush(T item) → bool
Non-blocking push: enqueues item and returns true if there was room (or a waiting consumer), or false without blocking if the buffer is full. Throws StateError if the queue is closed. Audited: 2026-06-12 11:26 EDT

Operators

operator ==(Object other) → bool
The equality operator.
inherited