Current section

Files

Jump to
ewe src ewe@internal@information.erl
Raw

src/ewe@internal@information.erl

-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(KRO) :: {get_info,
gleam@erlang@process:subject({ok, KRO} | {error, nil})} |
{set_info, KRO} |
shutdown.
-file("src/ewe/internal/information.gleam", 24).
?DOC(false).
-spec worker(gleam@erlang@process:name(message(KRP))) -> gleam@otp@supervision:child_specification(gleam@erlang@process:subject(message(KRP))).
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(KRV))) -> {ok, KRV} |
{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(KSA)), KSA) -> nil.
set(Subject, Info) ->
gleam@otp@actor:send(Subject, {set_info, Info}).