MCPcopy
hub / github.com/Effect-TS/effect / tryCommitAsync

Function tryCommitAsync

packages/effect/src/internal/stm/core.ts:357–384  ·  view source on GitHub ↗
(
  fiberId: FiberId.FiberId,
  self: STM.STM<A, E, R>,
  txnId: TxnId.TxnId,
  state: { value: STMState.STMState<A, E> },
  context: Context.Context<R>,
  scheduler: Scheduler.Scheduler,
  priority: number,
  k: (effect: Effect.Effect<A, E, R>) => unknown
)

Source from the content-addressed store, hash-verified

355
356/** @internal */
357const tryCommitAsync = <A, E, R>(
358 fiberId: FiberId.FiberId,
359 self: STM.STM<A, E, R>,
360 txnId: TxnId.TxnId,
361 state: { value: STMState.STMState<A, E> },
362 context: Context.Context<R>,
363 scheduler: Scheduler.Scheduler,
364 priority: number,
365 k: (effect: Effect.Effect<A, E, R>) => unknown
366) => {
367 if (STMState.isRunning(state.value)) {
368 const result = tryCommit(fiberId, self, state, context, scheduler, priority)
369 switch (result._tag) {
370 case TryCommitOpCodes.OP_DONE: {
371 completeTryCommit(result.exit, k)
372 break
373 }
374 case TryCommitOpCodes.OP_SUSPEND: {
375 Journal.addTodo(
376 txnId,
377 result.journal,
378 () => tryCommitAsync(fiberId, self, txnId, state, context, scheduler, priority, k)
379 )
380 break
381 }
382 }
383 }
384}
385
386/** @internal */
387const completeTodos = <A, E>(

Callers 1

unsafeAtomicallyFunction · 0.85

Calls 2

tryCommitFunction · 0.85
completeTryCommitFunction · 0.85

Tested by

no test coverage detected