aboutsummaryrefslogtreecommitdiffstats
path: root/server/client.erl
blob: 31d382f3093f01884f8b2732c705d9a90513a3ed (plain) (blame)
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
-module(client).
-export([start/1, loop/1, register/2, login/2]).

start(Node) ->
    process_flag(trap_exit, true),
    {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 ->
	    server:send(Client, {ok, {foo}}),
	    loop(Client);

	Cmd ->
	    server:send(Client, {error, {unknown_command, Cmd}}),
	    loop(Client)
    end.

register(Client, {Name, Password}) ->
    dis ! {Client, {register, {Name, Password}}}.

login(Client, {Node, Name, Password}) ->
    dis ! {Client, {login, {Node, Name, Password}}}.