def finish_world

bendvy-ecs-core@0.1.0.4 · transaction.bend:71

import bendvy-ecs-core@0.1.0.4/transaction.bend as Transaction
import Base
import bendvy-ecs-core@0.1.0.4/deferred_command.bend as Deferred

71def finish_world(~W: Type, ~E: Data, ~Error: Data,
72  ~enqueue: W -> List<&1,Deferred.Command<W>> -> W,
73  ~publish: W -> List<&2, E> -> W,
74  world: W, undo: List<&1, (W -> W)>, commands:List<&1, Deferred.Command<W>>, events: List<&2, E>, outcome: Outcome<Error>
75) -> Returned<W, Error>:
76  match outcome:
77    case Success{}:
78      committed = enqueue(world, List.reverse(&1,Deferred.Command<W>,commands))
79      Returned{publish(committed, List.reverse(&2, E, events)), Success{}}
80    case Failure{error}:
81      Returned{rollback(~W, undo, world), Failure{error}}

Uses (6)

Used by (2)