def tx_replace

bendvy-ecs-core@0.1.0.4 · structural.bend:34

import bendvy-ecs-core@0.1.0.4/structural.bend as Structural
import Base
import bendvy-ecs-core@0.1.0.4/column.bend as Col
import bendvy-ecs-core@0.1.0.4/component.bend as F
import bendvy-ecs-core@0.1.0.4/world.bend as W
import bendvy-ecs-core@0.1.0.4/transaction.bend as T

34# Stage a deferred optional replacement for a currently live checked handle.
35# Foreign/stale/not-live targets return QueueRejected with incoming owner and
36# unchanged queue. Accepted commands own incoming until commit/barrier or
37# discard; the transaction does not expose the replacement immediately.
38# Barrier application revalidates through component.replace. This lower-level
39# adapter drops displaced or later-rejected payload receipts; it does not
40# return them to the original caller or invoke a user finalizer.
41def tx_replace(~S: Data,~Store: Type,~R: Type,~E: Data,~Rest: Type,~C: Type,~V: Data,~Token: Data,~take: Store -> Rest & Col.Column<S,C>,~put: Rest -> Col.Column<S,C> -> Store,~project: C -> C & V,family: F.Family<S,Store,Rest,C,V,Token,take,put,project>,tx: T.Tx<W.World<S,Store,R,E>,E>,+handle: W.Handle<S>,incoming: Maybe<&1,C>) -> Queued<T.Tx<W.World<S,Store,R,E>,E>,C>:
42  match tx:
43    case T.Tx{world,undo,commands,events,trace}: queue_join(~S,~Store,~R,~E,~Rest,~C,~V,~Token,~take,~put,~project,family,W.valid(~S,~Store,~R,~E,world,handle),undo,commands,events,trace,handle,incoming)

Uses (10)

Used by (2)