def synchronized

bendvy-ecs-core@0.1.0.4 · event_notice_runtime.bend:36

import bendvy-ecs-core@0.1.0.4/event_notice_runtime.bend as EventNoticeRuntime
import Base
import bendvy-ecs-core@0.1.0.4/world.bend as W
import bendvy-ecs-core@0.1.0.4/relation_commands.bend as Notice
import bendvy-ecs-core@0.1.0.4/event_runtime.bend as Ev
import bendvy-ecs-core@0.1.0.4/event_family_runtime.bend as Family

36def synchronized(~S:Data,~C:Type,~R:Type,~P:Data,~F:Type,~H:Type,~sync:F -> Nat -> List<&2,P> -> F,state:State<S,P,F,H>,+tick:Nat,observed:W.World<S,C,R,Notice.Notice<S,P>> & List<&2,Notice.Notice<S,P>>) -> W.World<S,C,R,Notice.Notice<S,P>> & State<S,P,F,H>:
37  match state:
38    case State{Family.State{family,owners,+journal,frameStart},failures}:
39      (world,records)=observed
40      +published=List.drop(&2,P,originals(~S,~P,records),Ev.size(~P,journal))
41      (world,State{Family.State{sync(family,tick,published),owners,Ev.sync_checked(~P,Nat.is_lt(0n,Ev.count(~P,published)),journal,tick,published),frameStart},failures})

Uses (14)

Used by (1)