aboutsummaryrefslogtreecommitdiffstats
path: root/server/dispatcher.erl
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2010-10-14 02:56:32 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2010-10-14 02:56:32 +0200
commit9b5db7ab37a4a2527d523ff39bb0c5525553119e (patch)
tree8b89f91f02bc589e14a911f294513d4a351494a1 /server/dispatcher.erl
parentb29dda5113a994d2ad18f9e6048d9b69c91a79c7 (diff)
downloaderlang-9b5db7ab37a4a2527d523ff39bb0c5525553119e.tar.gz
erlang-9b5db7ab37a4a2527d523ff39bb0c5525553119e.tar.xz
erlang-9b5db7ab37a4a2527d523ff39bb0c5525553119e.zip
progress
server is working somehow...
Diffstat (limited to 'server/dispatcher.erl')
-rw-r--r--server/dispatcher.erl18
1 files changed, 13 insertions, 5 deletions
diff --git a/server/dispatcher.erl b/server/dispatcher.erl
index 390f9e5..4f1f58b 100644
--- a/server/dispatcher.erl
+++ b/server/dispatcher.erl
@@ -1,5 +1,5 @@
-module(dispatcher).
--export([start/0, init/0, handle/3]).
+-export([start/0, init/0, handle/2]).
start() ->
code:purge(server),
@@ -17,7 +17,7 @@ start() ->
init() ->
dict:new().
-handle(_, {register, {User, Password}}, Dict) ->
+handle({register, {User, Password}}, Dict) ->
case dict:find(User, Dict) of
{ok, _}->
{{error, duplicated_user}, Dict};
@@ -26,13 +26,21 @@ handle(_, {register, {User, Password}}, Dict) ->
{{ok, user_created}, dict:store(User, Password, Dict)}
end;
-handle(From, {login, {User, Password}}, Dict) ->
+handle({login, {Node, User, Password}}, Dict) ->
case dict:find(User, Dict) of
{ok, Password} ->
- {{ok, {logged_in, client:start(From)}}, Dict};
+ case client:start(Node) of
+ {ok, Pid} ->
+ {{ok, {logged_in, Pid}}, Dict};
+ _ ->
+ {{error, unable_to_login}, Dict}
+ end;
_ ->
{{error, user_or_password_invalid}, Dict}
end;
-handle(_, _, Dict) ->
+handle({'EXIT', _, _}, Dict) ->
+ Dict;
+
+handle(_, Dict) ->
{{error, unknown_command}, Dict}.