MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / awaitCompletionOrPause

Function awaitCompletionOrPause

packages/core/execution/src/engine.ts:640–661  ·  view source on GitHub ↗
(
    fiber: Fiber.Fiber<ExecuteResult, E>,
    pauseQueue: Queue.Queue<InternalPausedExecution<E>>,
  )

Source from the content-addressed store, hash-verified

638 * settles on whichever side completes first, success or failure.
639 */
640 const awaitCompletionOrPause = (
641 fiber: Fiber.Fiber<ExecuteResult, E>,
642 pauseQueue: Queue.Queue<InternalPausedExecution<E>>,
643 ): Effect.Effect<ExecutionResult, E> =>
644 Effect.raceFirst(
645 Fiber.join(fiber).pipe(
646 Effect.map(
647 (result): ExecutionResult => ({
648 status: "completed",
649 result,
650 }),
651 ),
652 ),
653 Queue.take(pauseQueue).pipe(
654 Effect.map(
655 (paused): ExecutionResult => ({
656 status: "paused",
657 execution: paused,
658 }),
659 ),
660 ),
661 );
662
663 /**
664 * Start an execution in pause/resume mode.

Callers 1

createExecutionEngineFunction · 0.85

Calls 1

takeMethod · 0.80

Tested by

no test coverage detected