def stream.block.tail.size

mylsm-lsm-store@0.6.0.1 · src/SstFile.bend:1536

import mylsm-lsm-store@0.6.0.1/src/SstFile.bend as SstFile
import Base
import mylsm-lsm-store@0.6.0.1/src/StorageBytes.bend as StorageBytes
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes

1536def stream.block.tail.size(
1537  pair: Bytes.Cursor & Maybe<&2, U32>,
1538  +payload_len: U32
1539) -> Maybe<&2, U32>:
1540  match pair:
1541    case (_, Some{+count}):
1542      Bool.pick(Maybe<&2, U32>,
1543        U32.is_lt(0, count) && (U32.is_le(payload_len, StorageBytes.MAX_BLOCK_BYTES()) ||
1544          U32.is_eq(count, 1) && U32.is_le(payload_len, StorageBytes.MAX_RECORD_BYTES())) &&
1545          U32.is_le(payload_len, (4294967263 : U32)),
1546        Some{(payload_len + 32 : U32)}, None{})
1547    case (_, None{}):
1548      None{}

Uses (14)

Used by (1)