Queue

abstract class Queue[A] extends Dequeue[A] with Enqueue[A]

A Queue is a lightweight, asynchronous queue into which values can be enqueued and of which elements can be dequeued.

Companion:
object
trait Enqueue[A]
trait Dequeue[A]
class Object
trait Matchable
class Any

Value members

Concrete methods

final override def isEmpty(implicit trace: Trace): UIO[Boolean]

Checks whether the queue is currently empty.

Checks whether the queue is currently empty.

Definition Classes
final override def isFull(implicit trace: Trace): UIO[Boolean]

Checks whether the queue is currently full.

Checks whether the queue is currently full.

Definition Classes

Inherited methods

def awaitShutdown(implicit trace: Trace): UIO[Unit]

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.

Inherited from:
Enqueue

How many elements can hold in the queue

How many elements can hold in the queue

Inherited from:
Enqueue
def isShutdown(implicit trace: Trace): UIO[Boolean]

true if shutdown has been called.

true if shutdown has been called.

Inherited from:
Enqueue
def offer(a: A)(implicit trace: Trace): UIO[Boolean]

Places one value in the queue.

Places one value in the queue.

Inherited from:
Enqueue
def offerAll[A1 <: A](as: Iterable[A1])(implicit trace: Trace): UIO[Chunk[A1]]

For Bounded Queue: uses the BackPressure Strategy, places the values in the queue and always returns no leftovers. 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 no leftovers. 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 no leftovers.

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 no leftovers.

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 the leftovers.

Inherited from:
Enqueue
final def poll(implicit trace: Trace): UIO[Option[A]]

Take the head option of values in the queue.

Take the head option of values in the queue.

Inherited from:
Dequeue
def shutdown(implicit trace: Trace): UIO[Unit]

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.

Inherited from:
Enqueue
def size(implicit trace: Trace): UIO[Int]

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.

Inherited from:
Enqueue
def take(implicit trace: Trace): UIO[A]

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.

Inherited from:
Dequeue
def takeAll(implicit trace: Trace): UIO[Chunk[A]]

Removes all the values in the queue and returns the values. If the queue is empty returns an empty collection.

Removes all the values in the queue and returns the values. If the queue is empty returns an empty collection.

Inherited from:
Dequeue
final def takeBetween(min: Int, max: Int)(implicit trace: Trace): UIO[Chunk[A]]

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.

Inherited from:
Dequeue
final def takeN(n: Int)(implicit trace: Trace): UIO[Chunk[A]]

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.

Inherited from:
Dequeue
def takeUpTo(max: Int)(implicit trace: Trace): UIO[Chunk[A]]

Takes up to max number of values in the queue.

Takes up to max number of values in the queue.

Inherited from:
Dequeue