MCPcopy Index your code
hub / github.com/Effect-TS/effect / fiberAll

Function fiberAll

packages/effect/src/internal/fiberRuntime.ts:3438–3482  ·  view source on GitHub ↗
(fibers: Iterable<Fiber.Fiber<A, E>>)

Source from the content-addressed store, hash-verified

3436
3437/** @internal */
3438export const fiberAll = <A, E>(fibers: Iterable<Fiber.Fiber<A, E>>): Fiber.Fiber<Array<A>, E> => {
3439 const _fiberAll = {
3440 ...Effectable.CommitPrototype,
3441 commit() {
3442 return internalFiber.join(this)
3443 },
3444 [internalFiber.FiberTypeId]: internalFiber.fiberVariance,
3445 id: () =>
3446 RA.fromIterable(fibers).reduce((id, fiber) => FiberId.combine(id, fiber.id()), FiberId.none as FiberId.FiberId),
3447 await: core.exit(forEachParUnbounded(fibers, (fiber) => core.flatten(fiber.await), false)),
3448 children: core.map(forEachParUnbounded(fibers, (fiber) => fiber.children, false), RA.flatten),
3449 inheritAll: core.forEachSequentialDiscard(fibers, (fiber) => fiber.inheritAll),
3450 poll: core.map(
3451 core.forEachSequential(fibers, (fiber) => fiber.poll),
3452 RA.reduceRight(
3453 Option.some<Exit.Exit<Array<A>, E>>(core.exitSucceed(new Array())),
3454 (optionB, optionA) => {
3455 switch (optionA._tag) {
3456 case "None": {
3457 return Option.none()
3458 }
3459 case "Some": {
3460 switch (optionB._tag) {
3461 case "None": {
3462 return Option.none()
3463 }
3464 case "Some": {
3465 return Option.some(
3466 core.exitZipWith(optionA.value, optionB.value, {
3467 onSuccess: (a, chunk) => [a, ...chunk],
3468 onFailure: internalCause.parallel
3469 })
3470 )
3471 }
3472 }
3473 }
3474 }
3475 }
3476 )
3477 ),
3478 interruptAsFork: (fiberId: FiberId.FiberId) =>
3479 core.forEachSequentialDiscard(fibers, (fiber) => fiber.interruptAsFork(fiberId))
3480 }
3481 return _fiberAll
3482}
3483
3484/* @internal */
3485export const fiberInterruptFork = <A, E>(self: Fiber.Fiber<A, E>): Effect.Effect<void> =>

Callers 1

fiberJoinAllFunction · 0.85

Calls 5

forEachParUnboundedFunction · 0.85
combineMethod · 0.65
idMethod · 0.65
mapMethod · 0.65
interruptAsForkMethod · 0.65

Tested by

no test coverage detected