pacient.erl

pacient.erl — Erlang source code, 833 bytes

Continguts del fitxer

-module(pacient).
-export([start/00, reanimar/0, mort/0, mort_natural/0, asfixia/0, aturada_cardiaca/0, missatge/1]).

start () ->
    register(?MODULE, spawn(fun proces/0)).

reanimar () ->
    start().

proces() ->
    receive
        mort ->
            io:format ("El pacient s'ha mort. Hora de la mort ~p ~n", [erlang:localtime()]),
            exit(normal);
        {alarma, Motiu} ->
            io:format ("Monitoritzant alarma ~p~n", [Motiu]),
            exit(Motiu);
        UnAltre ->
            io:format("Rebut <~p> ~n", [UnAltre]), 
            proces()
    end.

mort() ->
    ?MODULE!mort.

mort_natural() ->
    ?MODULE!{alarma,mort_natural}.

asfixia() ->
    ?MODULE!{alarma,asfixia}.

aturada_cardiaca() ->
    ?MODULE!{alarma,aturada_cardiaca}.

missatge(M) ->
    ?MODULE!M.