Current section
Files
Jump to
Current section
Files
src/spoke@core@internal@connection.erl
-module(spoke@core@internal@connection).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/spoke/core/internal/connection.gleam").
-export([new/0, receive_one/2, receive_all/2]).
-export_type([connection/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-opaque connection() :: {connection, bitstring()}.
-file("src/spoke/core/internal/connection.gleam", 14).
?DOC(false).
-spec new() -> connection().
new() ->
{connection, <<>>}.
-file("src/spoke/core/internal/connection.gleam", 21).
?DOC(false).
-spec receive_one(connection(), bitstring()) -> {ok,
{connection(),
gleam@option:option(spoke@packet@client@incoming:packet())}} |
{error, spoke@packet:decode_error()}.
receive_one(Connection, Data) ->
Data@1 = gleam@bit_array:append(erlang:element(2, Connection), Data),
gleam@result:'try'(
case spoke@packet@client@incoming:decode_packet(Data@1) of
{error, data_too_short} ->
{ok, {none, Data@1}};
{ok, {Packet, Data@2}} ->
{ok, {{some, Packet}, Data@2}};
{error, E} ->
{error, E}
end,
fun(_use0) ->
{Packet@1, Data@3} = _use0,
{ok, {{connection, Data@3}, Packet@1}}
end
).
-file("src/spoke/core/internal/connection.gleam", 36).
?DOC(false).
-spec receive_all(connection(), bitstring()) -> {ok,
{connection(), list(spoke@packet@client@incoming:packet())}} |
{error, spoke@packet:decode_error()}.
receive_all(Connection, Data) ->
Data@1 = gleam@bit_array:append(erlang:element(2, Connection), Data),
gleam@result:'try'(
spoke@packet@client@incoming:decode_packets(Data@1),
fun(_use0) ->
{Packets, Leftover_data} = _use0,
{ok, {{connection, Leftover_data}, Packets}}
end
).