Hyperlinkv0.8.0-beta.28

Queue

Queue.endconsteffect/Queue.ts:982
<A, E>(self: Enqueue<A, E | Done>): Effect<boolean>

Signals queue completion.

When to use

Use to stop accepting new offers while allowing already queued messages to be consumed.

Details

Returns false if the queue is already done.

Example (Ending queues)

import { Cause, Effect, Queue } from "effect"

const program = Effect.gen(function*() {
  const queue = yield* Queue.bounded<number, Cause.Done>(10)

  // Add some messages
  yield* Queue.offer(queue, 1)
  yield* Queue.offer(queue, 2)

  // Signal completion - no more messages will be accepted
  const ended = yield* Queue.end(queue)
  console.log(ended) // true

  // Trying to offer more messages will return false
  const offerResult = yield* Queue.offer(queue, 3)
  console.log(offerResult) // false

  // But we can still take existing messages
  const message = yield* Queue.take(queue)
  console.log(message) // 1
})
completion
Source effect/Queue.ts:9821 lines
export const end = <A, E>(self: Enqueue<A, E | Done>): Effect<boolean> => failCause(self, core.causeFail(core.Done()))
Referenced by 1 symbols