Current section
Files
Jump to
Current section
Files
src/eensy@store.erl
-module(eensy@store).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([set/2, get/1, start/1]).
-export_type([store_actor/1, msg/1]).
-opaque store_actor(HFG) :: {store_actor,
gleam@erlang@process:subject(msg(HFG))}.
-type msg(HFH) :: {set, HFH} |
{get, gleam@erlang@process:subject({ok, HFH} | {error, nil})}.
-file("src/eensy/store.gleam", 10).
-spec set(store_actor(HFM), HFM) -> nil.
set(Actor, Value) ->
gleam@erlang@process:send(erlang:element(2, Actor), {set, Value}).
-file("src/eensy/store.gleam", 14).
-spec get(store_actor(HFP)) -> {ok, HFP} | {error, nil}.
get(Actor) ->
_pipe = gleam@erlang@process:try_call(
erlang:element(2, Actor),
fun(_capture) -> {get, _capture} end,
100
),
_pipe@1 = gleam@result:map_error(_pipe, fun(_) -> nil end),
gleam@result:flatten(_pipe@1).
-file("src/eensy/store.gleam", 29).
-spec handle_message(msg(HFT), HFT) -> eensy@otp@actor:next(msg(HFT), HFT).
handle_message(Message, State) ->
case Message of
{set, Value} ->
eensy@otp@actor:continue(Value);
{get, Client} ->
gleam@erlang@process:send(Client, {ok, State}),
eensy@otp@actor:continue(State)
end.
-file("src/eensy/store.gleam", 5).
-spec start(HFI) -> {ok, store_actor(HFI)} |
{error, eensy@otp@actor:start_error()}.
start(State) ->
_pipe = eensy@otp@actor:start(State, fun handle_message/2),
gleam@result:map(_pipe, fun(Field@0) -> {store_actor, Field@0} end).