def traversal

bendvy-ecs-core@0.1.0.4 · decode_local.bend:38

import bendvy-ecs-core@0.1.0.4/decode_local.bend as DecodeLocal
import Base
import bendvy-ecs-core@0.1.0.4/decode_frame.bend as F
import bendvy-ecs-core@0.1.0.4/decode_requests.bend as Request
import bendvy-ecs-core@0.1.0.4/decode_owned_journal.bend as Journal
import bendvy-ecs-core@0.1.0.4/ordinary_declaration.bend as Identity
import bendvy-ecs-core@0.1.0.4/decode_data.bend as D
import bendvy-ecs-core@0.1.0.4/world.bend as W
import bendvy-ecs-core@0.1.0.4/local.bend as Local
import bendvy-ecs-core@0.1.0.4/transaction.bend as T
import bendvy-ecs-core@0.1.0.4/commands.bend as Commands
import bendvy-ecs-core@0.1.0.4/bundle_batch.bend as Batch

38# Non-empty deferred packets require the separate deferred completion route.
39# Pending is never silently accepted as a completed rollback.
40def traversal(~S:Data,~C:Type,~R:Type,~E:Data,~P:Type,~Q:Type,~identity:Identity.Declaration<S,P>,~project:P -> P & D.Raw,~L:Type,~A:Type,~Rows:Data,~Error:Data,~Out:Type,~success:L -> A -> Rows -> L & Out,~failure:L -> A -> L,~recover:L -> A -> List<Request.Packet<P>> -> List<Journal.Pending<Q>> -> L,rejected:Error,local:L,result:F.Frame<S,C,R,E,P,Q,identity,project> & (A & (T.Outcome<Error> & Rows))) -> Local.Outcome<W.World<S,C,R,E>,L,Error,Out>:
41  match result:
42    case (F.Frame{Request.Owner{Batch.Batch{tx,[]},_},_,_,_,_,[]},(args,(T.Success{},rows))):committed(~W.World<S,C,R,E>,~L,~A,~Rows,~Error,~Out,~success,~failure,local,args,rows,Commands.tx_finish(~S,~C,~R,~E,~Error,tx,T.Success{}))
43    case (frame,(args,(T.Success{},_))):abort(~S,~C,~R,~E,~P,~Q,~identity,~project,~L,~A,~Error,~Out,~recover,rejected,local,args,frame)
44    case (frame,(args,(T.Failure{error},_))):abort(~S,~C,~R,~E,~P,~Q,~identity,~project,~L,~A,~Error,~Out,~recover,error,local,args,frame)

Uses (16)

Used by (0)

No other definition uses this definition.