Current section
Files
Jump to
Current section
Files
src/utils@serde.erl
-module(utils@serde).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([serialize_bytes/2, deserialize_bytes/1, deserialize_int/2]).
-spec serialize_bytes(gleam@bytes_builder:bytes_builder(), bitstring()) -> gleam@bytes_builder:bytes_builder().
serialize_bytes(Buf, Data) ->
_pipe = Buf,
_pipe@1 = gleam@bytes_builder:append(
_pipe,
'Elixir.Varint.LEB128':encode(erlang:byte_size(Data))
),
gleam@bytes_builder:append(_pipe@1, Data).
-spec deserialize_bytes(bitstring()) -> {ok, {bitstring(), bitstring()}} |
{error, binary()}.
deserialize_bytes(Buf) ->
{Len, Rest} = 'Elixir.Varint.LEB128':decode(Buf),
case Rest of
<<Data:Len/binary-unit:8, Rest@1/bitstring>> ->
{ok, {Data, Rest@1}};
_ ->
{error, <<"Invalid bytes: out of data"/utf8>>}
end.
-spec deserialize_int(bitstring(), integer()) -> {ok, {integer(), bitstring()}} |
{error, binary()}.
deserialize_int(Buf, Bit_size) ->
case Buf of
<<Num:Bit_size, Rest/bitstring>> ->
{ok, {Num, Rest}};
_ ->
{error, <<"Invalid number: out of data"/utf8>>}
end.