effect-io-ai

Package: effect
Module: Queue

Queue.end

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
})

Signature

declare const end: <A, E>(self: Enqueue<A, E | Done>) => Effect<boolean>

Source

Since v4.0.0