aboutsummaryrefslogtreecommitdiffstats
path: root/prototypes/connections/examples/selection.pure
diff options
context:
space:
mode:
Diffstat (limited to 'prototypes/connections/examples/selection.pure')
-rw-r--r--prototypes/connections/examples/selection.pure19
1 files changed, 19 insertions, 0 deletions
diff --git a/prototypes/connections/examples/selection.pure b/prototypes/connections/examples/selection.pure
new file mode 100644
index 0000000..7d9d4ec
--- /dev/null
+++ b/prototypes/connections/examples/selection.pure
@@ -0,0 +1,19 @@
+// This is an input boundary layout, not a required storage or RAM model.
+// The client sends two little-endian u32 values followed by document bytes.
+layout Selection {
+ start: u32le;
+ count: u32le;
+ document: bytes;
+}
+
+on get {
+ let saved = store.read(request.key);
+ reply(saved, saved.body);
+}
+
+on put {
+ let input = view(Selection, request.body);
+ let selected = range(input.document, input.start, input.count);
+ let saved = store.write(request.key, request.revision, selected);
+ reply(saved, selected);
+}