-module(fused@erlang@process). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/fused/erlang/process.gleam"). -export([is_available/0, new/0, send/2, recv/1, new_selector/0, select/2, select_map/3, map_selector/2, merge_selector/2, selector_recv/2, spawn/2, spawn_unlinked/1, link/2, monitor/2, select_monitors/2, select_specific_monitor/3]). -file("src/fused/erlang/process.gleam", 7). -spec is_available() -> boolean(). is_available() -> true. -file("src/fused/erlang/process.gleam", 25). -spec new() -> {gleam@erlang@process:subject(FQK), gleam@erlang@process:subject(FQK)}. new() -> Subject = gleam@erlang@process:new_subject(), {Subject, Subject}. -file("src/fused/erlang/process.gleam", 31). -spec send(gleam@erlang@process:subject(FQN), FQN) -> nil. send(Send, X) -> gleam@erlang@process:send(Send, X). -file("src/fused/erlang/process.gleam", 36). -spec recv(gleam@erlang@process:subject(FQP)) -> FQP. recv(Recv) -> gleam_erlang_ffi:'receive'(Recv). -file("src/fused/erlang/process.gleam", 45). -spec new_selector() -> gleam@erlang@process:selector(any()). new_selector() -> gleam_erlang_ffi:new_selector(). -file("src/fused/erlang/process.gleam", 50). -spec select( gleam@erlang@process:selector(FQU), gleam@erlang@process:subject(FQU) ) -> gleam@erlang@process:selector(FQU). select(Selector, Receiver) -> gleam@erlang@process:select(Selector, Receiver). -file("src/fused/erlang/process.gleam", 55). -spec select_map( gleam@erlang@process:selector(FQY), gleam@erlang@process:subject(FRA), fun((FRA) -> FQY) ) -> gleam@erlang@process:selector(FQY). select_map(Selector, Receiver, Transform) -> gleam@erlang@process:select_map(Selector, Receiver, Transform). -file("src/fused/erlang/process.gleam", 64). -spec map_selector(gleam@erlang@process:selector(FRD), fun((FRD) -> FRF)) -> gleam@erlang@process:selector(FRF). map_selector(A, B) -> gleam_erlang_ffi:map_selector(A, B). -file("src/fused/erlang/process.gleam", 69). -spec merge_selector( gleam@erlang@process:selector(FRH), gleam@erlang@process:selector(FRH) ) -> gleam@erlang@process:selector(FRH). merge_selector(A, B) -> gleam_erlang_ffi:merge_selector(A, B). -file("src/fused/erlang/process.gleam", 74). -spec selector_recv( gleam@erlang@process:pid_(), gleam@erlang@process:selector(FRL) ) -> FRL. selector_recv(Self, From) -> _assert_subject = erlang:self(), case Self =:= _assert_subject of true -> nil; false -> erlang:error(#{gleam_error => assert, message => <<"Assertion failed."/utf8>>, file => <>, module => <<"fused/erlang/process"/utf8>>, function => <<"selector_recv"/utf8>>, line => 75, kind => binary_operator, operator => '==', left => #{kind => expression, value => Self, start => 1458, 'end' => 1462 }, right => #{kind => expression, value => _assert_subject, start => 1466, 'end' => 1480 }, start => 1451, 'end' => 1480, expression_start => 1458}) end, gleam_erlang_ffi:select(From). -file("src/fused/erlang/process.gleam", 88). -spec spawn( gleam@erlang@process:pid_(), fun((gleam@erlang@process:pid_()) -> any()) ) -> gleam@erlang@process:pid_(). spawn(_, F) -> proc_lib:spawn_link(fun() -> F(erlang:self()) end). -file("src/fused/erlang/process.gleam", 94). -spec spawn_unlinked(fun((gleam@erlang@process:pid_()) -> any())) -> gleam@erlang@process:pid_(). spawn_unlinked(F) -> proc_lib:spawn(fun() -> F(erlang:self()) end). -file("src/fused/erlang/process.gleam", 100). -spec link(gleam@erlang@process:pid_(), gleam@erlang@process:pid_()) -> nil. link(Self, Pid) -> _assert_subject = erlang:self(), case Self =:= _assert_subject of true -> nil; false -> erlang:error(#{gleam_error => assert, message => <<"Assertion failed."/utf8>>, file => <>, module => <<"fused/erlang/process"/utf8>>, function => <<"link"/utf8>>, line => 101, kind => binary_operator, operator => '==', left => #{kind => expression, value => Self, start => 1953, 'end' => 1957 }, right => #{kind => expression, value => _assert_subject, start => 1961, 'end' => 1975 }, start => 1946, 'end' => 1975, expression_start => 1953}) end, gleam_erlang_ffi:link(Pid), nil. -file("src/fused/erlang/process.gleam", 107). -spec monitor(gleam@erlang@process:pid_(), gleam@erlang@process:pid_()) -> gleam@erlang@process:monitor(). monitor(Self, Pid) -> _assert_subject = erlang:self(), case Self =:= _assert_subject of true -> nil; false -> erlang:error(#{gleam_error => assert, message => <<"Assertion failed."/utf8>>, file => <>, module => <<"fused/erlang/process"/utf8>>, function => <<"monitor"/utf8>>, line => 108, kind => binary_operator, operator => '==', left => #{kind => expression, value => Self, start => 2088, 'end' => 2092 }, right => #{kind => expression, value => _assert_subject, start => 2096, 'end' => 2110 }, start => 2081, 'end' => 2110, expression_start => 2088}) end, gleam@erlang@process:monitor(Pid). -file("src/fused/erlang/process.gleam", 113). -spec select_monitors( gleam@erlang@process:selector(FRP), fun((gleam@erlang@process:pid_()) -> FRP) ) -> gleam@erlang@process:selector(FRP). select_monitors(Selector, Mapping) -> gleam@erlang@process:select_monitors( Selector, fun(Down) -> Pid@1 = case Down of {process_down, _, Pid, _} -> Pid; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"fused/erlang/process"/utf8>>, function => <<"select_monitors"/utf8>>, line => 118, value => _assert_fail, start => 2315, 'end' => 2362, pattern_start => 2326, pattern_end => 2355}) end, Mapping(Pid@1) end ). -file("src/fused/erlang/process.gleam", 124). -spec select_specific_monitor( gleam@erlang@process:selector(FRS), gleam@erlang@process:monitor(), fun((gleam@erlang@process:pid_()) -> FRS) ) -> gleam@erlang@process:selector(FRS). select_specific_monitor(Selector, Monitor, Mapping) -> gleam@erlang@process:select_specific_monitor( Selector, Monitor, fun(Down) -> Pid@1 = case Down of {process_down, _, Pid, _} -> Pid; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"fused/erlang/process"/utf8>>, function => <<"select_specific_monitor"/utf8>>, line => 130, value => _assert_fail, start => 2611, 'end' => 2658, pattern_start => 2622, pattern_end => 2651}) end, Mapping(Pid@1) end ).