summaryrefslogtreecommitdiff
path: root/user_interface.erl
diff options
context:
space:
mode:
Diffstat (limited to 'user_interface.erl')
-rw-r--r--user_interface.erl40
1 files changed, 40 insertions, 0 deletions
diff --git a/user_interface.erl b/user_interface.erl
new file mode 100644
index 0000000..ccd77c6
--- /dev/null
+++ b/user_interface.erl
@@ -0,0 +1,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.