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}