aboutsummaryrefslogtreecommitdiffstats
path: root/prototypes/connections/examples/bounded-editor.pure
blob: e9f26342344185270ce55ada654461c6ce41a80e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Same document edit as editor.pure, with an authored final-size policy.
// The store checks the limit against the current version under its writer lock.
layout Edit {
    start: u32le;
    remove: u32le;
    insert: bytes;
}

on get {
    let document = store.read(request.key);
    reply(document, document.body);
}

on put {
    let edit = view(Edit, request.body);
    let saved = store.splice(request.key, request.revision,
                             edit.start, edit.remove, edit.insert, 8);
    reply(saved, edit.insert);
}