pub enum DeferredProducerOp {
Emit {
node_id: NodeId,
handle: HandleId,
},
Complete {
node_id: NodeId,
},
Error {
node_id: NodeId,
handle: HandleId,
},
Callback(Box<dyn FnOnce() + Send>),
}Expand description
A producer-pattern operation deferred because it would have
violated the ascending partition-order protocol (Phase H+ STRICT,
D115). Drained by BatchGuard::drop after wave_guards are
released (no partitions held → safe to acquire any partition).
Variants with HandleId fields hold a binding-side retain taken
at defer time. The drain path releases this retain after the
operation fires; the panic-discard path releases it without firing.
Variants§
Emit
Deferred Core::emit. Retain held on handle.
Complete
Deferred Core::complete. No handle.
Error
Deferred Core::error. Retain held on handle.
Callback(Box<dyn FnOnce() + Send>)
Generic deferred callback (e.g., deferred subscribe from
producer build closure). The closure captures everything it
needs; graphrefly-core doesn’t depend on operator-specific
types. The closure is responsible for its own retain discipline.