summaryrefslogtreecommitdiff
path: root/mess_client.erl
diff options
context:
space:
mode:
Diffstat (limited to 'mess_client.erl')
-rw-r--r--mess_client.erl36
1 files changed, 36 insertions, 0 deletions
diff --git a/mess_client.erl b/mess_client.erl
new file mode 100644
index 0000000..4db8081
--- /dev/null
+++ b/mess_client.erl
@@ -0,0 +1,36 @@
+%%% The client process which runs on each user node
+
+-module(mess_client).
+-export([client/2]).
+-include("mess_interface.hrl").
+
+client(Server_Node, Name) ->
+ {messenger, Server_Node} ! #logon{client_pid=self(), username=Name},
+ await_result(),
+ client(Server_Node).
+
+client(Server_Node) ->
+ receive
+ logoff ->
+ exit(normal);
+ #message_to{to_name=ToName, message=Message} ->
+ {messenger, Server_Node} !
+ #message{client_pid=self(), to_name=ToName, message=Message},
+ await_result();
+ {message_from, FromName, Message} ->
+ io:format("Message from ~p: ~p~n", [FromName, Message])
+ end,
+ client(Server_Node).
+
+%%% wait for a response from the server
+await_result() ->
+ receive
+ #abort_client{message=Why} ->
+ io:format("~p~n", [Why]),
+ exit(normal);
+ #server_reply{message=What} ->
+ io:format("~p~n", [What])
+ after 5000 ->
+ io:format("No response from server~n", []),
+ exit(timeout)
+ end.