-module(ewe@internal@information). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/ewe/internal/information.gleam"). -export([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(KPY) :: {get_info, gleam@erlang@process:subject({ok, KPY} | {error, nil})} | {set_info, KPY} | shutdown. -file("src/ewe/internal/information.gleam", 24). ?DOC(false). -spec worker(gleam@erlang@process:name(message(KPZ))) -> gleam@otp@supervision:child_specification(gleam@erlang@process:subject(message(KPZ))). 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/information.gleam", 46). ?DOC(false). -spec get(gleam@erlang@process:subject(message(KQF))) -> {ok, KQF} | {error, nil}. get(Subject) -> gleam@otp@actor:call( Subject, 10000, fun(Field@0) -> {get_info, Field@0} end ). -file("src/ewe/internal/information.gleam", 51). ?DOC(false). -spec set(gleam@erlang@process:subject(message(KQK)), KQK) -> nil. set(Subject, Info) -> gleam@otp@actor:send(Subject, {set_info, Info}).