Hyperlinkv0.8.0-beta.28

TxPubSub

TxPubSub.releaseSubscriberconsteffect/TxPubSub.ts:561
<A>(queue: TxQueue.TxQueue<A>): (
  self: TxPubSub<A>
) => Effect.Effect<void, never, Effect.Transaction>
<A>(self: TxPubSub<A>, queue: TxQueue.TxQueue<A>): Effect.Effect<
  void,
  never,
  Effect.Transaction
>

Removes a subscriber queue from the pub/sub and shuts it down.

When to use

Use to release a manually acquired subscriber queue inside a larger transaction, removing it from the pub/sub and shutting it down together with related transactional cleanup.

Details

This is the transactional release step of subscribe, exposed so that callers can compose it with other Tx operations in a single transaction.

Gotchas

The supplied queue is shut down after being removed, so callers should pass a queue acquired for this pub/sub.

Source effect/TxPubSub.ts:56114 lines
export const releaseSubscriber: {
  <A>(queue: TxQueue.TxQueue<A>): (self: TxPubSub<A>) => Effect.Effect<void, never, Effect.Transaction>
  <A>(self: TxPubSub<A>, queue: TxQueue.TxQueue<A>): Effect.Effect<void, never, Effect.Transaction>
} = dual(
  2,
  <A>(
    self: TxPubSub<A>,
    queue: TxQueue.TxQueue<A>
  ): Effect.Effect<void, never, Effect.Transaction> =>
    Effect.gen(function*() {
      yield* TxRef.update(self.subscribersRef, (subs) => subs.filter((q) => q !== queue))
      yield* TxQueue.shutdown(queue)
    })
)
Referenced by 2 symbols