Fulhack to fix concurrentcy issues

This commit is contained in:
Jonatan Pålsson 2011-04-13 16:52:27 +02:00
parent e3152576a2
commit 8bd87d349a
2 changed files with 7 additions and 10 deletions

View file

@ -129,7 +129,7 @@ handle_call({join_table, Table}, From, State) ->
0 -> CurrentPlayers / 2; 0 -> CurrentPlayers / 2;
1 -> (CurrentPlayers / 2)+1 1 -> (CurrentPlayers / 2)+1
end, end,
case (TableNum < SmallestTable) of case (TableNum =< SmallestTable) of
true -> {reply , {error, table_full}, State}; true -> {reply , {error, table_full}, State};
false -> ggs_table:add_player(TablePID, FromPlayer), false -> ggs_table:add_player(TablePID, FromPlayer),
{reply, {ok, TablePID}, State} {reply, {ok, TablePID}, State}

View file

@ -121,24 +121,21 @@ intern_add_player(Table, Player) ->
1 -> 1 ->
erlang:display("A player joined"); erlang:display("A player joined");
2 -> 2 ->
[First|_] = PlayerList, [P1,P2] = PlayerList,
case First == Player of erlang:display(PlayerList),
true ->
erlang:display("P1: joining"), erlang:display("P1: joining"),
ggs_db:setItem(Table, local_storage, Player, player1), ggs_db:setItem(Table, local_storage, P1, player1),
erlang:display(ggs_db:getItem(Table, local_storage, Player)), erlang:display(ggs_db:getItem(Table, local_storage, Player)),
ggs_db:setItem(Table, local_storage, player1_y, 50), ggs_db:setItem(Table, local_storage, player1_y, 50),
ggs_table:send_command(Table, Player, {"welcome", int2str(1)}), ggs_table:send_command(Table, Player, {"welcome", int2str(1)}),
ggs_table:notify_all_players(Table, {"player1_y", int2str(50)}); ggs_table:notify_all_players(Table, {"player1_y", int2str(50)}),
false ->
erlang:display("P2: joining"), erlang:display("P2: joining"),
ggs_db:setItem(Table, local_storage, Player, player2), ggs_db:setItem(Table, local_storage, P2, player2),
erlang:display(ggs_db:getItem(Table, local_storage, Player)), erlang:display(ggs_db:getItem(Table, local_storage, Player)),
ggs_db:setItem(Table, local_storage, player2_y, 50), ggs_db:setItem(Table, local_storage, player2_y, 50),
ggs_table:send_command(Table, Player, {"welcome", int2str(2)}), ggs_table:send_command(Table, Player, {"welcome", int2str(2)}),
ggs_table:send_command(Table, Player, {"player1_y", int2str(50)}), ggs_table:send_command(Table, Player, {"player1_y", int2str(50)}),
ggs_table:notify_all_players(Table, {"player2_y", int2str(50)}) ggs_table:notify_all_players(Table, {"player2_y", int2str(50)});
end;
_Other -> _Other ->
ggs_table:send_command(Table, Player, {"not_welcome", ""}) ggs_table:send_command(Table, Player, {"not_welcome", ""})
end. end.