aboutsummaryrefslogtreecommitdiff
path: root/tictactoe-2/apps/ttt_server/src/ttt_server.erl
diff options
context:
space:
mode:
Diffstat (limited to 'tictactoe-2/apps/ttt_server/src/ttt_server.erl')
-rw-r--r--tictactoe-2/apps/ttt_server/src/ttt_server.erl18
1 files changed, 14 insertions, 4 deletions
diff --git a/tictactoe-2/apps/ttt_server/src/ttt_server.erl b/tictactoe-2/apps/ttt_server/src/ttt_server.erl
index a0de947..52a7957 100644
--- a/tictactoe-2/apps/ttt_server/src/ttt_server.erl
+++ b/tictactoe-2/apps/ttt_server/src/ttt_server.erl
@@ -36,8 +36,8 @@ loop(State) ->
loop(#ttt_state{
seq = Id + 1,
games = orddict:append(Id, Game, State#ttt_state.games)});
- {Player, show, Ref} ->
- case orddict:find(Ref, State#ttt_state.games) of
+ {Player, show, Id} ->
+ case orddict:find(Id, State#ttt_state.games) of
error ->
Player ! no_such_game;
{ok, [Game]} ->
@@ -45,6 +45,14 @@ loop(State) ->
Game#ttt_game.pid ! {Player, show}
end,
loop(State);
+ {Player, join, Id} ->
+ case orddict:find(Id, State#ttt_state.games) of
+ error ->
+ Player ! no_such_game;
+ {ok, [Game]} ->
+ Game#ttt_game.pid ! {Player, join}
+ end,
+ loop(State);
dump ->
io:format("Server state:~n~p~n", [State]),
loop(State);
@@ -78,7 +86,7 @@ start_game(Server) ->
X
after 100 ->
io:format("timeout~n", []),
- {timeout}
+ timeout
end.
dump(Server) ->
@@ -103,6 +111,8 @@ stop(Server, Pid) ->
stop() ->
case global:whereis_name(?GLOBAL_NAME) of
- undefined -> io:format("Server not running~n");
+ undefined ->
+ io:format("Server not running~n"),
+ not_running;
Pid -> Pid ! {stop, self()}
end.