summaryrefslogtreecommitdiff
path: root/mess_client.erl
blob: 4db80812d15d5e9e4cc7e346e51e8b3950e85a6d (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
%%% 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.