Hyperlinkv0.8.0-beta.28

TxPubSub

TxPubSub.isFullconsteffect/TxPubSub.ts:333
<A>(self: TxPubSub<A>): Effect.Effect<boolean>

Checks whether any subscriber queue is at capacity.

Example (Checking whether a pub/sub is full)

import { Effect, TxPubSub } from "effect"

const program = Effect.gen(function*() {
  const hub = yield* TxPubSub.bounded<number>(2)
  const full = yield* TxPubSub.isFull(hub)
  console.log(full) // false
})
getters
export const isFull = <A>(self: TxPubSub<A>): Effect.Effect<boolean> =>
  Effect.gen(function*() {
    if (self.capacity === Number.POSITIVE_INFINITY) return false
    const subscribers = yield* TxRef.get(self.subscribersRef)
    for (const queue of subscribers) {
      if (yield* TxQueue.isFull(queue)) return true
    }
    return false
  }).pipe(Effect.tx)