summaryrefslogtreecommitdiff
path: root/mess_client.erl
blob: 41f54188dc4a19e0230ffdb050f76006dfd630ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
%%% 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.