diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/bounded-editor.aup | 20 | ||||
| -rw-r--r-- | examples/editor.aup | 20 |
2 files changed, 40 insertions, 0 deletions
diff --git a/examples/bounded-editor.aup b/examples/bounded-editor.aup new file mode 100644 index 0000000..d8d1d0d --- /dev/null +++ b/examples/bounded-editor.aup @@ -0,0 +1,20 @@ +# The same editor with an authored size policy: an edit whose result would +# exceed 8 bytes fails as a whole, and nothing is stored. +state documents: bytes by key + +input show = message by key +input edit = message by key { + start: u32 + remove: u32 + insert: bytes +} + +on show { + reply documents[key] +} + +on edit { + documents[key].replace(edit.start .. edit.start + edit.remove, edit.insert) + require documents[key].bytes <= 8 + reply edit.insert +} diff --git a/examples/editor.aup b/examples/editor.aup new file mode 100644 index 0000000..621c8ba --- /dev/null +++ b/examples/editor.aup @@ -0,0 +1,20 @@ +# Revision-checked byte edits of keyed documents. The runtime owns the +# documents: an edit is a transaction on the key's working version, which +# commits only if the sender's revision is still current. +state documents: bytes by key + +input show = message by key +input edit = message by key { + start: u32 + remove: u32 + insert: bytes +} + +on show { + reply documents[key] +} + +on edit { + documents[key].replace(edit.start .. edit.start + edit.remove, edit.insert) + reply edit.insert +} |
