-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()})}.