-module(radish@utils). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([prepare/1, execute/3, execute_blocking/3, receive_forever/3]). -file("/home/massivefermion/Desktop/radish/src/radish/utils.gleam", 13). -spec prepare(list(binary())) -> bitstring(). prepare(Parts) -> _pipe = Parts, _pipe@1 = gleam@list:map(_pipe, fun(Field@0) -> {bulk_string, Field@0} end), _pipe@2 = {array, _pipe@1}, radish@encoder:encode(_pipe@2). -file("/home/massivefermion/Desktop/radish/src/radish/utils.gleam", 20). -spec execute(lifeguard:pool(radish@client:message()), bitstring(), integer()) -> {ok, list(radish@resp:value())} | {error, radish@error:error()}. execute(Client, Cmd, Timeout) -> gleam@result:then( begin _pipe = lifeguard:call( Client, fun(_capture) -> {command, Cmd, _capture, Timeout} end, Timeout, Timeout ), gleam@result:replace_error(_pipe, actor_error) end, fun(Reply) -> gleam@result:then(Reply, fun(Reply@1) -> case Reply@1 of [{simple_error, Error}] -> {error, {server_error, Error}}; [{bulk_error, Error}] -> {error, {server_error, Error}}; Value -> {ok, Value} end end) end ). -file("/home/massivefermion/Desktop/radish/src/radish/utils.gleam", 34). -spec execute_blocking( lifeguard:pool(radish@client:message()), bitstring(), integer() ) -> {ok, list(radish@resp:value())} | {error, radish@error:error()}. execute_blocking(Client, Cmd, Timeout) -> My_subject = gleam@erlang@process:new_subject(), gleam@result:then( begin _pipe = lifeguard:send( Client, {blocking_command, Cmd, My_subject, Timeout}, Timeout ), gleam@result:replace_error(_pipe, actor_error) end, fun(_) -> _pipe@1 = gleam_erlang_ffi:new_selector(), _pipe@2 = gleam@erlang@process:selecting( _pipe@1, My_subject, fun gleam@function:identity/1 ), _pipe@3 = gleam_erlang_ffi:select(_pipe@2), (fun(Reply) -> case Reply of {ok, [{simple_error, Error}]} -> {error, {server_error, Error}}; {ok, [{bulk_error, Error}]} -> {error, {server_error, Error}}; {ok, Value} -> {ok, Value}; {error, Error@1} -> {error, Error@1} end end)(_pipe@3) end ). -file("/home/massivefermion/Desktop/radish/src/radish/utils.gleam", 58). -spec receive_forever( lifeguard:pool(radish@client:message()), integer(), fun(({ok, list(radish@resp:value())} | {error, radish@error:error()}) -> boolean()) ) -> nil. receive_forever(Client, Timeout, Rest) -> My_subject = gleam@erlang@process:new_subject(), _ = lifeguard:send(Client, {receive_forever, My_subject, Timeout}, Timeout), _pipe = gleam_erlang_ffi:new_selector(), _pipe@1 = gleam@erlang@process:selecting( _pipe, My_subject, fun gleam@function:identity/1 ), _pipe@2 = gleam_erlang_ffi:select(_pipe@1), (fun(Reply) -> case Reply of {ok, [{simple_error, Error}]} -> case Rest({error, {server_error, Error}}) of true -> receive_forever(Client, Timeout, Rest); false -> nil end; {ok, [{bulk_error, Error}]} -> case Rest({error, {server_error, Error}}) of true -> receive_forever(Client, Timeout, Rest); false -> nil end; Other -> case Rest(Other) of true -> receive_forever(Client, Timeout, Rest); false -> nil end end end)(_pipe@2).