src/coordinator/IoPolicy.bend
mylsm-lsm-store@0.6.0.1 · 36 lines · 6 definitions
1import Base
2import mylsm-lsm-store@0.6.0.1/src/coordinator/Protocol.bend as Protocol
3
4
5type ReadDisposition is Data:
6 ReadInterrupted{}
7 ReadWouldBlock{}
8 ReadFailure{}
9
10
11type WriteDisposition is Data:
12 WriteInterrupted{}
13 WriteWouldBlock{}
14 WriteFailure{}
15
16def read.disposition(code: U32) -> ReadDisposition:
17 match code:
18 case 4: ReadInterrupted{}
19 case 11: ReadWouldBlock{}
20 case 35: ReadWouldBlock{}
21 case _: ReadFailure{}
22
23def write.disposition(code: U32) -> WriteDisposition:
24 match code:
25 case 4: WriteInterrupted{}
26 case 11: WriteWouldBlock{}
27 case 35: WriteWouldBlock{}
28 case _: WriteFailure{}
29def write_chunk.copied(copies: U32 & U32 & U32) -> U32:
30 match copies:
31 case (checked, (retained, _)):
32 Bool.pick(U32, U32.is_le(checked, 65536), retained, 65536)
33
34
35def write_chunk(remaining: U32) -> U32:
36 write_chunk.copied(Protocol.u32.duplicate.triple(remaining))