Current section
Files
Jump to
Current section
Files
src/spoke@core@session_state.erl
-module(spoke@core@session_state).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/spoke/core/session_state.gleam").
-export_type([packet_state/0, storage_update/0, session_state/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(
" Persisted MQTT sessions (e.g. across client restarts) need to store their state.\n"
" This modules contains the types required for the persistence.\n"
).
-type packet_state() :: {unacked_qo_s1, spoke@packet:message_data()} |
{unreceived_qo_s2, spoke@packet:message_data()} |
received_qo_s2 |
unreleased_qo_s2.
-type storage_update() :: clear_session |
{store_next_packet_id, integer()} |
{clear_packet_state, integer()} |
{update_packet_state, integer(), packet_state()}.
-type session_state() :: {session_state,
integer(),
list({integer(), packet_state()})}.