QuackDB.Protocol.Reader (quackdb v0.1.0)

Copy Markdown View Source

Binary reader primitives for the Quack wire format.

Provides field ids, LEB128 integers, strings/blobs, nullable values, optional indexes, fixed-width numbers, and DuckDB hugeint decoding with structured protocol errors on malformed input.

Summary

Types

read_result(value)

@type read_result(value) :: {:ok, value, binary()} | {:error, QuackDB.Error.t()}

Functions

read_blob(binary)

@spec read_blob(binary()) :: read_result(binary())

read_bool(arg)

@spec read_bool(binary()) :: read_result(boolean())

read_field_id(arg1)

@spec read_field_id(binary()) :: read_result(non_neg_integer())

read_float32(arg1)

@spec read_float32(binary()) :: read_result(float())

read_float64(arg1)

@spec read_float64(binary()) :: read_result(float())

read_hugeint(binary)

@spec read_hugeint(binary()) :: read_result(integer())

read_int8(arg1)

@spec read_int8(binary()) :: read_result(integer())

read_int16(arg1)

@spec read_int16(binary()) :: read_result(integer())

read_int32(arg1)

@spec read_int32(binary()) :: read_result(integer())

read_int64(arg1)

@spec read_int64(binary()) :: read_result(integer())

read_list(binary, read_element)

@spec read_list(binary(), (binary() -> read_result(value))) :: read_result([value])
when value: term()

read_nullable(binary, read_value)

@spec read_nullable(binary(), (binary() -> read_result(value))) ::
  read_result(value | nil)
when value: term()

read_optional_index(binary)

@spec read_optional_index(binary()) :: read_result(non_neg_integer() | nil)

read_sleb128(binary)

@spec read_sleb128(binary()) :: read_result(integer())

read_string(binary)

@spec read_string(binary()) :: read_result(String.t())

read_uint8(arg1)

@spec read_uint8(binary()) :: read_result(non_neg_integer())

read_uint16(arg1)

@spec read_uint16(binary()) :: read_result(non_neg_integer())

read_uint32(arg1)

@spec read_uint32(binary()) :: read_result(non_neg_integer())

read_uint64(arg1)

@spec read_uint64(binary()) :: read_result(non_neg_integer())

read_uleb128(binary)

@spec read_uleb128(binary()) :: read_result(non_neg_integer())

take(binary, size)

@spec take(binary(), non_neg_integer()) :: read_result(binary())