Hyperlinkv0.8.0-beta.28

Channel

Channel.runIntoQueueconsteffect/Channel.ts:8119
<OutElem, OutErr>(queue: Queue.Queue<OutElem, OutErr | Cause.Done>): <
  OutDone,
  Env
>(
  self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>
) => Effect.Effect<void, never, Env>
<OutElem, OutErr, OutDone, Env>(
  self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>,
  queue: Queue.Queue<OutElem, OutErr | Cause.Done>
): Effect.Effect<void, never, Env>

Runs a channel and offers each output element into a queue.

Details

When the channel completes, the queue is ended. When the channel fails, the queue is failed with the channel's cause. The returned effect itself completes with void.

destructors
Source effect/Channel.ts:811929 lines
export const runIntoQueue: {
  <OutElem, OutErr>(queue: Queue.Queue<OutElem, OutErr | Cause.Done>): <OutDone, Env>(
    self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>
  ) => Effect.Effect<void, never, Env>
  <OutElem, OutErr, OutDone, Env>(
    self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>,
    queue: Queue.Queue<OutElem, OutErr | Cause.Done>
  ): Effect.Effect<void, never, Env>
} = dual(
  (args) => isChannel(args[0]),
  <OutElem, OutErr, OutDone, Env>(
    self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>,
    queue: Queue.Queue<OutElem, OutErr | Cause.Done>
  ): Effect.Effect<void, never, Env> =>
    Effect.uninterruptibleMask((restore) =>
      runForEach(self, (value) => Queue.offer(queue, value)).pipe(
        restore,
        Effect.exit,
        Effect.flatMap((exit) => {
          if (Exit.isSuccess(exit)) {
            Queue.endUnsafe(queue)
          } else {
            Queue.failCauseUnsafe(queue, exit.cause)
          }
          return Effect.void
        })
      )
    )
)
Referenced by 1 symbols