tur/workflow
stdlib/workflow.tur
persistent workflow helpers built on tur/serial.
Since: Phase 21
defn
save-cont!
(save-cont! [k :ptr<void>] :ptr<void>)
serialise an opaque serial-continuation handle to a bytes value.
Parameters
| k | opaque continuation pointer from serial-shift |
Returns
A bytes :ptr<void> on success, or nil when codegen is not yet implemented.
Since: Phase 21
defn
resume-cont!
(resume-cont! [b :ptr<void> v :int] :int)
deserialise a bytes value and resume the encoded continuation with v.
Parameters
| b | serialised bytes from save-cont! | |
| v | value to pass to the resumed continuation |
Returns
The continuation's return value; 0 when codegen is not yet implemented.
Since: Phase 21
defn
workflow-suspend
(workflow-suspend [k :ptr<void>] :ptr<void>)
suspend the current workflow step by serialising continuation k.
Parameters
| k | opaque continuation pointer from serial-shift |
Returns
Serialised bytes :ptr<void> from save-cont! (nil if not yet implemented).
Example
(serial-reset
(let [ok? (serial-shift (fn [k] (workflow-suspend k)) false)]
...))
Since: Phase 21
defn
workflow-resume
(workflow-resume [b :ptr<void> v :int] :int)
resume a previously suspended workflow step with value v.
Parameters
| b | bytes value produced by workflow-suspend | |
| v | value to inject into the resumed continuation |
Returns
The continuation's return value (0 when not yet implemented).
Since: Phase 21