src/coordinator/SnapshotValueLengthPolicy.bend
mylsm-lsm-store@0.6.0.0 · 33 lines · 0 definitions
1import Base
2import mylsm-lsm-store@0.6.0.0/src/ByteMemTable.bend as ByteMemTable
3import mylsm-lsm-store@0.6.0.0/src/ByteWal.bend as ByteWal
4
5# Carries the state for Decision.
6type Decision is Data:
7 NeedSst{}
8 Missing{}
9 Found{value_bytes: U32}
10
11# Handles delta.
12def delta(probe: ByteMemTable.LengthProbe) -> Decision:
13 match probe:
14 case ByteMemTable.LengthAbsent{}: NeedSst{}
15 case ByteMemTable.LengthDeleted{}: Missing{}
16 case ByteMemTable.LengthPresent{value_bytes}: Found{value_bytes}
17
18# Handles persisted.
19def persisted(metadata: ByteWal.ValueMetadata) -> Decision:
20 match metadata:
21 case ByteWal.ValueAbsent{}: Missing{}
22 case ByteWal.ValueDeleted{}: Missing{}
23 case ByteWal.ValuePresent{value_bytes}: Found{value_bytes}
24
25# Handles result.
26def result(
27 delta: ByteMemTable.LengthProbe,
28 persisted_metadata: ByteWal.ValueMetadata
29) -> Decision:
30 match delta:
31 case ByteMemTable.LengthAbsent{}: persisted(persisted_metadata)
32 case ByteMemTable.LengthDeleted{}: Missing{}
33 case ByteMemTable.LengthPresent{value_bytes}: Found{value_bytes}