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})