aboutsummaryrefslogtreecommitdiffstats
path: root/prototypes/connections/examples/selection.pure
blob: 7d9d4ec0cd53ca449b098abbf3b5b7ddc4d3f169 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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);
}