A ZQueue[RA, RB, EA, EB, A, B]
is a lightweight, asynchronous queue into
which values of type A
can be enqueued and of which elements of type B
can be dequeued. The queue's enqueueing operations may utilize an environment
of type RA
and may fail with errors of type EA
. The dequeueing operations
may utilize an environment of type RB
and may fail with errors of type
EB
.
- Companion:
- object
Value members
Abstract methods
Waits until the queue is shutdown. The IO
returned by this method will
not resume until the queue has been shutdown. If the queue is already
shutdown, the IO
will resume right away.
Waits until the queue is shutdown. The IO
returned by this method will
not resume until the queue has been shutdown. If the queue is already
shutdown, the IO
will resume right away.
For Bounded Queue: uses the BackPressure
Strategy, places the values in
the queue and always returns true. If the queue has reached capacity, then
the fiber performing the offerAll
will be suspended until there is room
in the queue.
For Bounded Queue: uses the BackPressure
Strategy, places the values in
the queue and always returns true. If the queue has reached capacity, then
the fiber performing the offerAll
will be suspended until there is room
in the queue.
For Unbounded Queue: Places all values in the queue and returns true.
For Sliding Queue: uses Sliding
Strategy If there is room in the queue,
it places the values otherwise it removes the old elements and enqueues the
new ones. Always returns true.
For Dropping Queue: uses Dropping
Strategy, It places the values in the
queue but if there is no room it will not enqueue them and return false.
Interrupts any fibers that are suspended on offer
or take
. Future calls
to offer*
and take*
will be interrupted immediately.
Interrupts any fibers that are suspended on offer
or take
. Future calls
to offer*
and take*
will be interrupted immediately.
Retrieves the size of the queue, which is equal to the number of elements in the queue. This may be negative if fibers are suspended waiting for elements to be added to the queue.
Retrieves the size of the queue, which is equal to the number of elements in the queue. This may be negative if fibers are suspended waiting for elements to be added to the queue.
Removes the oldest value in the queue. If the queue is empty, this will return a computation that resumes when an item has been added to the queue.
Removes the oldest value in the queue. If the queue is empty, this will return a computation that resumes when an item has been added to the queue.
Concrete methods
Transforms elements enqueued into this queue with a pure function.
Transforms elements enqueued into this queue with a pure function.
Transforms elements enqueued into this queue with an effectful function.
Transforms elements enqueued into this queue with an effectful function.
Transforms elements enqueued into and dequeued from this queue with the specified pure functions.
Transforms elements enqueued into and dequeued from this queue with the specified pure functions.
Transforms elements enqueued into and dequeued from this queue with the specified effectual functions.
Transforms elements enqueued into and dequeued from this queue with the specified effectual functions.
Applies a filter to elements enqueued into this queue. Elements that do not pass the filter will be immediately dropped.
Applies a filter to elements enqueued into this queue. Elements that do not pass the filter will be immediately dropped.
Like filterInput
, but uses an effectful function to filter the elements.
Like filterInput
, but uses an effectful function to filter the elements.
Filters elements dequeued from the queue using the specified predicate.
Filters elements dequeued from the queue using the specified predicate.
Filters elements dequeued from the queue using the specified effectual predicate.
Filters elements dequeued from the queue using the specified effectual predicate.
Transforms elements dequeued from this queue with a function.
Transforms elements dequeued from this queue with a function.
Transforms elements dequeued from this queue with an effectful function.
Transforms elements dequeued from this queue with an effectful function.
Takes a number of elements from the queue between the specified minimum and maximum. If there are fewer than the minimum number of elements available, suspends until at least the minimum number of elements have been collected.
Takes a number of elements from the queue between the specified minimum and maximum. If there are fewer than the minimum number of elements available, suspends until at least the minimum number of elements have been collected.
Takes the specified number of elements from the queue. If there are fewer than the specified number of elements available, it suspends until they become available.
Takes the specified number of elements from the queue. If there are fewer than the specified number of elements available, it suspends until they become available.
Deprecated methods
Like bothWith
, but tuples the elements instead of applying a function.
Like bothWith
, but tuples the elements instead of applying a function.
- Deprecated
Like bothWithM
, but uses a pure function.
Like bothWithM
, but uses a pure function.
- Deprecated
Creates a new queue from this queue and another. Offering to the composite queue will broadcast the elements to both queues; taking from the composite queue will dequeue elements from both queues and apply the function point-wise.
Creates a new queue from this queue and another. Offering to the composite queue will broadcast the elements to both queues; taking from the composite queue will dequeue elements from both queues and apply the function point-wise.
Note that using queues with different strategies may result in surprising
behavior. For example, a dropping queue and a bounded queue composed
together may apply f
to different elements.
- Deprecated