std/disk
storage that survives crashes
Trace event: Written [k: text] on [n: node].
Phrases
disk.Write [v: value] at [k: text] on [n: node]
Store v durably on n, which must be the receiver (instantly; records disk.Written)
- Gives
- —
- Contexts
- node
- Kind
- phrase, native
- Source
- disk/disk.synod:3
- Examples
- disk/memory
disk.Read [k: text] on [n: node] or [d: value]
The value stored on n, or d when nothing is stored; the result has the type of d (spec/04 §4.4)
- Gives
- same as `d`
- Contexts
- node
- Kind
- phrase, native
- Source
- disk/disk.synod:6
- Examples
- disk/memory
Trace events
disk.Written [k: text] on [n: node]
Trace event: disk.Write v at k on n
- Gives
- —
- Contexts
- look
- Kind
- trace event, native
- Source
- disk/disk.synod:9
- Examples
- disk/memory
Examples
memory
Shows disk.Write, disk.Read and the disk.Written event: a node keeps a value across a crash
# package main
# Shows disk.Write, disk.Read and the disk.Written event: a node keeps a value across a crash
use example.com/library/disk/memory
use std/sim
define main
set n to (sim.Spawn memory)
deliver (message memory.Remember with Value 42) to n
after 1s
sim.Crash n
after 2s
sim.Restart n
sim.StopAt 3s
# package memory
use std/disk
use std/look
use std/sim
Remember has
set Value to 0
Node has
set Loaded to 0
# Write the value to disk, so it outlives a crash
when [n: Node] (sim.Delivered Remember)
disk.Write Remember.Value at "value" on n
set n.Loaded to Remember.Value
# After a restart the fields are fresh; the disk still holds the value
define [n: Node] start
set n.Loaded to (disk.Read "value" on n or 0)
# Written is a trace event: a look can react to it
when (disk.Written k on n)
draw (look.Label k) as saved for n