aboutsummaryrefslogtreecommitdiffstats
path: root/server/client.erl
diff options
context:
space:
mode:
Diffstat (limited to 'server/client.erl')
-rw-r--r--server/client.erl25
1 files changed, 17 insertions, 8 deletions
diff --git a/server/client.erl b/server/client.erl
index 9d778f0..31d382f 100644
--- a/server/client.erl
+++ b/server/client.erl
@@ -1,23 +1,32 @@
-module(client).
-export([start/1, loop/1, register/2, login/2]).
-start(Client) ->
+start(Node) ->
process_flag(trap_exit, true),
- spawn(client, loop, [Client]).
+ {Client, Ref} = server:start_on_node(Node, client, undef),
+ link(Client),
+ Server = spawn_link(client, loop, [{Client, Ref}]),
+
+ case server:rpc({Client, Ref}, {change_state, Server}) of
+ {ok} ->
+ {ok, {Client, Ref}};
+ _ ->
+ {error, unknown_error}
+ end.
loop(Client) ->
receive
- {list} ->
- Client ! {ok, foo},
+ list ->
+ server:send(Client, {ok, {foo}}),
loop(Client);
- true ->
- Client ! {error, unknown_command},
+ Cmd ->
+ server:send(Client, {error, {unknown_command, Cmd}}),
loop(Client)
end.
register(Client, {Name, Password}) ->
dis ! {Client, {register, {Name, Password}}}.
-login(Client, {Name, Password}) ->
- dis ! {Client, {login, {Name, Password}}}.
+login(Client, {Node, Name, Password}) ->
+ dis ! {Client, {login, {Node, Name, Password}}}.