Bulkhead class

Caps the number of concurrently in-flight Result-returning operations, optionally queueing the overflow.

The bulkhead pattern isolates a slow or failing downstream so it cannot exhaust client-side resources (threads, sockets, memory). Callers above the configured concurrency wait in a FIFO queue; once the queue is also full, additional callers receive Error(Failure.bulkheadRejected()) instead of being kept waiting.

final bulkhead = Bulkhead(maxConcurrent: 8, maxQueueSize: 16);

final result = await bulkhead.execute(() => api.fetchUser(id));
// If the bulkhead is full, `result` is an Error with
// FailureKind.bulkheadRejected — the underlying call was not made.

Composes naturally with CircuitBreaker, RetryHelper, and ResultCache: wrap the bulkhead around the call to bound resource use, then layer retries / caching outside it as needed.

Constructors

Bulkhead({required int maxConcurrent, int maxQueueSize = 0})
Creates a bulkhead permitting at most maxConcurrent in-flight operations.

Properties

hasCapacity bool
Whether a new call would be admitted right now without queueing or rejection.
no setter
hashCode int
The hash code for this object.
no setterinherited
inFlight int
The number of operations currently executing.
no setter
maxConcurrent int
Maximum number of operations allowed to run at the same time.
final
maxQueueSize int
Maximum number of callers that may wait when maxConcurrent is reached. 0 disables queueing, causing overflow callers to be rejected.
final
queueLength int
The number of callers currently waiting for a slot to open.
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

execute<T>(Future<Result<T>> operation()) Future<Result<T>>
Runs operation subject to the bulkhead's concurrency cap.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
inherited

Operators

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