-module(glixir@agent). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/glixir/agent.gleam"). -export([start/1, start_named/2, get/3, get_timeout/4, update/2, cast/2, get_and_update/3, stop/2, pid/1]). -export_type([agent/1, agent_error/0]). -opaque agent(EDJ) :: {agent, gleam@erlang@process:pid_()} | {gleam_phantom, EDJ}. -type agent_error() :: {start_error, binary()} | timeout | agent_down | {decode_error, binary()}. -file("src/glixir/agent.gleam", 44). -spec start(fun(() -> EDU)) -> {ok, agent(EDU)} | {error, agent_error()}. start(Initial_fun) -> case 'Elixir.Agent':start_link(Initial_fun, []) of {ok, Pid} -> {ok, {agent, Pid}}; {error, Reason} -> {error, {start_error, gleam@string:inspect(Reason)}} end. -file("src/glixir/agent.gleam", 51). -spec start_named(gleam@erlang@atom:atom_(), fun(() -> EDY)) -> {ok, agent(EDY)} | {error, agent_error()}. start_named(Name, Initial_fun) -> Options = [erlang:list_to_tuple( [gleam_erlang_ffi:identity(erlang:binary_to_atom(<<"name"/utf8>>)), gleam_erlang_ffi:identity(Name)] )], case 'Elixir.Agent':start_link(Initial_fun, Options) of {ok, Pid} -> {ok, {agent, Pid}}; {error, Reason} -> {error, {start_error, gleam@string:inspect(Reason)}} end. -file("src/glixir/agent.gleam", 64). -spec get(agent(EEC), fun((EEC) -> EEE), gleam@dynamic@decode:decoder(EEE)) -> {ok, EEE} | {error, agent_error()}. get(Agent, Fun, Decoder) -> {agent, Pid} = Agent, Result_dynamic = 'Elixir.Agent':get(Pid, Fun, 5000), _pipe = gleam@dynamic@decode:run(Result_dynamic, Decoder), _pipe@1 = gleam@result:map_error(_pipe, fun gleam@string:inspect/1), gleam@result:map_error(_pipe@1, fun(Field@0) -> {decode_error, Field@0} end). -file("src/glixir/agent.gleam", 76). -spec get_timeout( agent(EEI), fun((EEI) -> EEK), integer(), gleam@dynamic@decode:decoder(EEK) ) -> {ok, EEK} | {error, agent_error()}. get_timeout(Agent, Fun, Timeout, Decoder) -> {agent, Pid} = Agent, Result_dynamic = 'Elixir.Agent':get(Pid, Fun, Timeout), _pipe = gleam@dynamic@decode:run(Result_dynamic, Decoder), _pipe@1 = gleam@result:map_error(_pipe, fun gleam@string:inspect/1), gleam@result:map_error(_pipe@1, fun(Field@0) -> {decode_error, Field@0} end). -file("src/glixir/agent.gleam", 89). -spec update(agent(EEO), fun((EEO) -> EEO)) -> {ok, nil} | {error, agent_error()}. update(Agent, Fun) -> {agent, Pid} = Agent, case erlang:atom_to_binary('Elixir.Agent':update(Pid, Fun, 5000)) of <<"ok"/utf8>> -> {ok, nil}; _ -> {error, agent_down} end. -file("src/glixir/agent.gleam", 100). -spec cast(agent(EES), fun((EES) -> EES)) -> nil. cast(Agent, Fun) -> {agent, Pid} = Agent, _ = 'Elixir.Agent':cast(Pid, Fun), nil. -file("src/glixir/agent.gleam", 106). -spec get_and_update( agent(EEU), fun((EEU) -> {EEW, EEU}), gleam@dynamic@decode:decoder(EEW) ) -> {ok, EEW} | {error, agent_error()}. get_and_update(Agent, Fun, Decoder) -> {agent, Pid} = Agent, Result_dynamic = 'Elixir.Agent':get_and_update(Pid, Fun, 5000), _pipe = gleam@dynamic@decode:run(Result_dynamic, Decoder), _pipe@1 = gleam@result:map_error(_pipe, fun gleam@string:inspect/1), gleam@result:map_error(_pipe@1, fun(Field@0) -> {decode_error, Field@0} end). -file("src/glixir/agent.gleam", 118). -spec stop(agent(any()), gleam@erlang@atom:atom_()) -> {ok, nil} | {error, agent_error()}. stop(Agent, Reason) -> {agent, Pid} = Agent, case erlang:atom_to_binary('Elixir.Agent':stop(Pid, Reason, 5000)) of <<"ok"/utf8>> -> {ok, nil}; _ -> {error, agent_down} end. -file("src/glixir/agent.gleam", 126). -spec pid(agent(any())) -> gleam@erlang@process:pid_(). pid(Agent) -> {agent, P} = Agent, P.