-module(ewe@internal@info). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/ewe/internal/info.gleam"). -export([start_worker/1, get/1, set/2]). -export_type([message/1]). -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). -type message(KDU) :: {get_info, gleam@erlang@process:subject({ok, KDU} | {error, nil})} | {set_info, KDU} | shutdown. -file("src/ewe/internal/info.gleam", 12). ?DOC(false). -spec start_worker(gleam@erlang@process:name(message(KDV))) -> gleam@otp@supervision:child_specification(gleam@erlang@process:subject(message(KDV))). start_worker(Name) -> Info_actor = begin _pipe = gleam@otp@actor:new(none), _pipe@1 = gleam@otp@actor:on_message( _pipe, fun(State, Msg) -> case Msg of {get_info, Reply_to} -> gleam@otp@actor:send( Reply_to, gleam@option:to_result(State, nil) ), gleam@otp@actor:continue(State); {set_info, Server} -> gleam@otp@actor:continue({some, Server}); shutdown -> gleam@otp@actor:stop() end end ), _pipe@2 = gleam@otp@actor:named(_pipe@1, Name), gleam@otp@actor:start(_pipe@2) end, gleam@otp@supervision:worker(fun() -> Info_actor end). -file("src/ewe/internal/info.gleam", 33). ?DOC(false). -spec get(gleam@erlang@process:subject(message(KEB))) -> {ok, KEB} | {error, nil}. get(Subject) -> gleam@otp@actor:call( Subject, 10000, fun(Field@0) -> {get_info, Field@0} end ). -file("src/ewe/internal/info.gleam", 37). ?DOC(false). -spec set(gleam@erlang@process:subject(message(KEG)), KEG) -> nil. set(Subject, Info) -> gleam@otp@actor:send(Subject, {set_info, Info}).