Hyperlinkv0.8.0-beta.28

TxPubSub

TxPubSub.sizeconsteffect/TxPubSub.ts:284
<A>(self: TxPubSub<A>): Effect.Effect<number>

Returns the current number of messages across all subscriber queues (the max).

Example (Reading subscriber queue size)

import { Effect, TxPubSub, TxQueue } from "effect"

const program = Effect.gen(function*() {
  const hub = yield* TxPubSub.unbounded<number>()

  yield* Effect.scoped(
    Effect.gen(function*() {
      const sub = yield* TxPubSub.subscribe(hub)
      yield* TxPubSub.publish(hub, 1)
      yield* TxPubSub.publish(hub, 2)
      const s = yield* TxPubSub.size(hub)
      console.log(s) // 2
    })
  )
})
getters
Source effect/TxPubSub.ts:28410 lines
export const size = <A>(self: TxPubSub<A>): Effect.Effect<number> =>
  Effect.gen(function*() {
    const subscribers = yield* TxRef.get(self.subscribersRef)
    let maxSize = 0
    for (const queue of subscribers) {
      const s = yield* TxQueue.size(queue)
      if (s > maxSize) maxSize = s
    }
    return maxSize
  }).pipe(Effect.tx)
Referenced by 1 symbols