summaryrefslogtreecommitdiff
path: root/user_interface.erl
blob: ccd77c6504c0e069e57ea85e2a602b3648f1dfe1 (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
38
39
40
%%% User interface to the messenger program

%%% login(Name)
%%%	One user at time can log in from each Erlang node in the
%%%	system messenger: and choose a suitable Name. If the Name
%%%	is already logged in at another node or if someone else is
%%%	alreeady logged in at the same node, login will be rejected
%%%	with a suitable error message.

%%% logoff()
%%% 	Logs off anybody at the node

%%% message(ToName, Message)
%%% 	sends Message to ToName. Error messages if the user of this
%%% 	function is not logged on or if ToName is not logged on at
%%% 	any node.

-module(user_interface).
-export([logon/1, logoff/0, message/2]).
-include("mess_interface.hrl").
-include("mess_config.hrl").

logon(Name) ->
	case whereis(mess_client) of
		undefined ->
			register(mess_client,
				spawn(mess_client, client, [?server_node, Name]));
		_ -> already_logged_on
	end.

logoff() ->
	mess_client ! logoff.

message(ToName, Message) ->
	case whereis(mess_client) of	% Test if client is running
		undefined ->
			not_logged_on;
		_ -> mess_client ! #message_to{to_name=ToName, message=Message},
			ok
	end.