framework/step
CPS interpreter. State is a pure phantom; every operation rewraps.
Types
pub type Outcome(out, err) {
Done(out)
Fail(err)
Accepted
}
Constructors
-
Done(out) -
Fail(err) -
Accepted
Values
pub fn apply(
operation: verb.Verb(value),
then: fn(value) -> Step(out, err, Open),
) -> Step(out, err, state)
pub fn call(
request: connector.Read(value),
then: fn(value) -> Step(out, err, state),
) -> Step(out, err, state)
pub fn call_write(
request: connector.Write(value),
then: fn(value) -> Step(out, err, Committed),
) -> Step(out, err, Committed)
pub fn commit(
carry: value,
then: fn(value) -> Step(out, err, Committed),
) -> Step(out, err, state)
pub fn guard(
condition: Bool,
error: err,
then: fn() -> Step(out, err, state),
) -> Step(out, err, state)
pub fn interpret(
step: Step(out, err, Start),
context: io.Context,
) -> io.Promise(Outcome(out, err))
pub fn read(
read: fn(io.Context) -> io.Promise(value),
then: fn(value) -> Step(out, err, state),
) -> Step(out, err, state)
pub fn reject(
operation: verb.Verb(value),
error: err,
) -> Step(out, err, state)
Discard staged normal work; confirm only this verb in its own transaction. A failed save rejects the promise and is mapped to infrastructure failure.
pub fn resume(
step: Step(out, err, Committed),
context: io.Context,
) -> io.Promise(Outcome(out, err))
Queue adapters may only enter a continuation at a committed boundary.