Browse Source

Merge branch 'master' of https://github.com/kakaranet/games

Roman Dayneko 11 years ago
parent
commit
29233fc56a

+ 1 - 1
apps/face/priv/templates/index.html

@@ -10,7 +10,7 @@
 </head>
 </head>
 <body>
 <body>
 {{body}}
 {{body}}
-<script>var transition = {pid: '', port:'8000'};</script>
+<script>var transition = {pid: '', host: 'localhost', port:'8000'};</script>
 <script>function handle_web_socket(body) { console.log(String(bert.decodebuf(body))); } </script>
 <script>function handle_web_socket(body) { console.log(String(bert.decodebuf(body))); } </script>
 <script src='/static/nitrogen/bullet.js' type='text/javascript' charset='utf-8'></script>
 <script src='/static/nitrogen/bullet.js' type='text/javascript' charset='utf-8'></script>
 <script src='/static/nitrogen/n2o.js' type='text/javascript' charset='utf-8'></script>
 <script src='/static/nitrogen/n2o.js' type='text/javascript' charset='utf-8'></script>

+ 20 - 16
apps/face/src/index.erl

@@ -22,17 +22,13 @@ take(GameId,Place) ->
         bert:tuple(bert:atom("game_action"),GameId, bert:atom("okey_take"),[{pile,Place}])))).
         bert:tuple(bert:atom("game_action"),GameId, bert:atom("okey_take"),[{pile,Place}])))).
 
 
 discard(GameId, Color, Value) ->
 discard(GameId, Color, Value) ->
-    ws:send(
-      bert:encodebuf(
+    ws:send(bert:encodebuf(bert:tuple(
+        bert:atom('client'),
         bert:tuple(
         bert:tuple(
-          bert:atom('client'),
-          bert:tuple(
-            bert:atom("game_action"), GameId,
-            bert:atom("okey_discard"), [{tile, bert:tuple(bert:atom("OkeyPiece"), Color, Value)}]
-           )
-         )
-       )
-     ).
+            bert:atom("game_action"),
+            GameId,
+            bert:atom("okey_discard"),
+            [{tile, bert:tuple(bert:atom("OkeyPiece"), Color, Value)}])))).
 
 
 redraw_tiles([{Tile, _}| _ ] = TilesList) ->
 redraw_tiles([{Tile, _}| _ ] = TilesList) ->
     wf:update(dddiscard, [#dropdown{id = dddiscard, postback = combo, value = Tile, source = [dddiscard], options = [#option{label = CVBin, value = CVBin} || {CVBin, _} <- TilesList]}]).
     wf:update(dddiscard, [#dropdown{id = dddiscard, postback = combo, value = Tile, source = [dddiscard], options = [#option{label = CVBin, value = CVBin} || {CVBin, _} <- TilesList]}]).
@@ -66,8 +62,12 @@ body() ->
       #button{ id = discard, body = <<"Discard">>, postback = discard, source=[dddiscard]}
       #button{ id = discard, body = <<"Discard">>, postback = discard, source=[dddiscard]}
     ].
     ].
 
 
+event(terminate) -> wf:info("terminate");
 event(init) ->
 event(init) ->
     {ok,GamePid} = game_session:start_link(self()),
     {ok,GamePid} = game_session:start_link(self()),
+%    event(attach),
+%    event(join),
+    wf:info("INIT ~p",[GamePid]),
     put(game_session, GamePid);
     put(game_session, GamePid);
 
 
 event(combo)  -> wf:info("Combo: ~p",[wf:q(dddiscard)]);
 event(combo)  -> wf:info("Combo: ~p",[wf:q(dddiscard)]);
@@ -77,10 +77,14 @@ event(take)   -> wf:wire(take("1000001", wf:q(ddtake)));
 
 
 event(discard) -> 
 event(discard) -> 
     TilesList = get(game_okey_tiles),
     TilesList = get(game_okey_tiles),
-    wf:info("dd ~p", [wf:q(dddiscard)]),
+%    wf:info("dd ~p", [wf:q(dddiscard)]),
     {_, {C, V}} = lists:keyfind(erlang:list_to_binary(wf:q(dddiscard)), 1, TilesList),
     {_, {C, V}} = lists:keyfind(erlang:list_to_binary(wf:q(dddiscard)), 1, TilesList),
     wf:wire(discard("1000001", erlang:integer_to_list(C), erlang:integer_to_list(V)));
     wf:wire(discard("1000001", erlang:integer_to_list(C), erlang:integer_to_list(V)));
 
 
+event({client,Message}) ->
+    GamePid = get(game_session),
+    game_session:process_request(GamePid, Message);
+
 event({server, {game_event, _, okey_game_started, Args}}) ->
 event({server, {game_event, _, okey_game_started, Args}}) ->
     {_, Tiles} = lists:keyfind(tiles, 1, Args),
     {_, Tiles} = lists:keyfind(tiles, 1, Args),
     TilesList = [{erlang:list_to_binary([erlang:integer_to_list(C), " ", erlang:integer_to_list(V)]), {C, V}} || {_, C, V} <- Tiles],
     TilesList = [{erlang:list_to_binary([erlang:integer_to_list(C), " ", erlang:integer_to_list(V)]), {C, V}} || {_, C, V} <- Tiles],
@@ -94,7 +98,7 @@ event({server, {game_event, _, okey_tile_discarded, Args}}) ->
     if
     if
        Im == Player ->
        Im == Player ->
             {_, {_, C, V}} = lists:keyfind(tile, 1, Args),
             {_, {_, C, V}} = lists:keyfind(tile, 1, Args),
-            wf:info("c ~p v ~p", [C, V]),
+%            wf:info("c ~p v ~p", [C, V]),
             TilesListOld = get(game_okey_tiles),
             TilesListOld = get(game_okey_tiles),
             TilesList = lists:keydelete({C, V}, 2, TilesListOld),
             TilesList = lists:keydelete({C, V}, 2, TilesListOld),
             put(game_okey_tiles, TilesList),
             put(game_okey_tiles, TilesList),
@@ -127,7 +131,7 @@ event({server,{game_event, Game, okey_turn_timeout, Args}}) ->
 event({server, {game_event, _, okey_game_info, Args}}) ->
 event({server, {game_event, _, okey_game_info, Args}}) ->
     wf:info("okay_game_info ~p", [Args]),
     wf:info("okay_game_info ~p", [Args]),
     {_, PlayersInfo} = lists:keyfind(players, 1, Args),
     {_, PlayersInfo} = lists:keyfind(players, 1, Args),
-    wf:info("pi ~p", [PlayersInfo]),
+%    wf:info("pi ~p", [PlayersInfo]),
     Players = 
     Players = 
         lists:zipwith(
         lists:zipwith(
           fun(ListId, {PlayerId, PlayerLabel}) ->
           fun(ListId, {PlayerId, PlayerLabel}) ->
@@ -137,10 +141,10 @@ event({server, {game_event, _, okey_game_info, Args}}) ->
           lists:map(
           lists:map(
             fun
             fun
                 (#'PlayerInfo'{id = Id, robot = true} = P) ->
                 (#'PlayerInfo'{id = Id, robot = true} = P) ->
-                    wf:info("pp ~p", [P]),
+%                    wf:info("pp ~p", [P]),
                     {Id, <<Id/binary, <<" R ">>/binary>>};
                     {Id, <<Id/binary, <<" R ">>/binary>>};
                 (#'PlayerInfo'{id = Id, robot = false} = P) ->
                 (#'PlayerInfo'{id = Id, robot = false} = P) ->
-                    wf:info("pr ~p", [P]),
+%                    wf:info("pr ~p", [P]),
                     put(okey_im, Id),
                     put(okey_im, Id),
                     {Id, <<Id/binary, <<" M ">>/binary>>}
                     {Id, <<Id/binary, <<" M ">>/binary>>}
             end,
             end,
@@ -161,4 +165,4 @@ event({server,{game_event, _, okey_next_turn, Args}}) ->
     end,
     end,
     wf:wire("document.querySelector('#" ++ erlang:atom_to_list(LabelId) ++ "').style.color = \"red\";"),
     wf:wire("document.querySelector('#" ++ erlang:atom_to_list(LabelId) ++ "').style.color = \"red\";"),
     put(okey_turn_mark, LabelId);
     put(okey_turn_mark, LabelId);
-event(Event)  -> wf:info("Event: ~p", [Event]).
+event(Event)  -> ok. % wf:info("Event: ~p", [Event]).

+ 0 - 161
apps/face/src/n2o_game.erl

@@ -1,161 +0,0 @@
--module(n2o_game).
--author('Maxim Sokhatsky').
--include_lib("n2o/include/wf.hrl").
--include("../../server/include/requests.hrl").
--include("../../server/include/game_okey.hrl").
--include("../../server/include/game_tavla.hrl").
-
-
--export([init/4]).
--export([stream/3]).
--export([info/3]).
--export([terminate/2]).
-
--define(PERIOD, 1000).
-
-init(_Transport, Req, _Opts, _Active) ->
-    put(actions,[]),
-    Ctx = wf_context:init_context(Req),
-    NewCtx = wf_core:fold(init,Ctx#context.handlers,Ctx),
-    wf_context:context(NewCtx),
-    Res = ets:update_counter(globals,onlineusers,{2,1}),
-    wf:reg(broadcast,wf:peer(Req)),
-    wf:send(broadcast,{counter,Res}),
-    Req1 = wf:header(<<"Access-Control-Allow-Origin">>, <<"*">>, NewCtx#context.req),
-    {ok, Req1, NewCtx}.
-
-html_events(Pro, State) ->
-    Pickled = proplists:get_value(pickle,Pro),
-    Linked = proplists:get_value(linked,Pro),
-    Depickled = wf:depickle(Pickled),
-    %wf:info("Depickled: ~p",[Depickled]),
-    case Depickled of
-        #ev{module=Module,name=Function,payload=Parameter,trigger=Trigger} ->
-            case Function of 
-                control_event   -> lists:map(fun({K,V})-> put(K,V) end,Linked),
-                                   Module:Function(Trigger, Parameter);
-                api_event       -> Module:Function(Parameter,Linked,State);
-                event           -> lists:map(fun({K,V})-> put(K,V) end,Linked),
-                                   Module:Function(Parameter);
-                UserCustomEvent -> Module:Function(Parameter,Trigger,State) end;
-        _Ev -> wf:error("N2O allows only #ev{} events") end,
-    Actions = get(actions),
-    wf_context:clear_actions(),
-    Render = wf:render(Actions),
-    GenActions = get(actions),
-    RenderGenActions = wf:render(GenActions),
-    wf_context:clear_actions(),
-    JS = iolist_to_binary([Render,RenderGenActions]),
-    wf:json([{eval,JS}]).
-
-stream(<<"ping">>, Req, State) ->
-    wf:info("ping received~n"),
-    {reply, <<"pong">>, Req, State};
-stream({text,Data}, Req, State) ->
-    wf:info("Text Received ~p",[Data]),
-    self() ! Data,
-    {ok, Req,State};
-stream({binary,Info}, Req, State) ->
-    Pro = binary_to_term(Info,[safe]),
-    case Pro of
-        {client,M} -> info({client,M},Req,State);
-        _ -> {reply,html_events(Pro,State),Req,State} end;
-stream(Data, Req, State) ->
-    wf:info("Data Received ~p",[Data]),
-    self() ! Data,
-    {ok, Req,State}.
-
-render_actions(InitActions) ->
-    RenderInit = wf:render(InitActions),
-    InitGenActions = get(actions),
-    RenderInitGenActions = wf:render(InitGenActions),
-    wf_context:clear_actions(),
-    [RenderInit,RenderInitGenActions].
-
-info({client,Message}, Req, State) ->
-    GamePid = get(game_session),
-    game_session:process_request(GamePid, Message), 
-    Module = State#context.module,
-    case (catch Module:event({client,Message})) of
-        {'EXIT', Error} ->
-            wf:info("client event died with ~p", [Error]);
-        _Ok ->
-            _Ok
-    end,
-    Actions = get(actions),
-    wf_context:clear_actions(),
-    Render = wf:render(Actions),
-    GenActions = get(actions),
-    RenderGenActions = wf:render(GenActions),
-    wf_context:clear_actions(),
-    {reply,wf:json([{eval,iolist_to_binary([Render,RenderGenActions])},
-                    {data,binary_to_list(term_to_binary(Message))}]),Req,State};
-
-info({send_message,Message}, Req, State) ->
-    Module = State#context.module,
-    case (catch Module:event({server,Message})) of 
-        {'EXIT', Error} ->
-            wf:info("server event died with ~p", [Error]);
-        _Ok ->
-            _Ok
-    end,
-    Actions = get(actions),
-    wf_context:clear_actions(),
-    Render = wf:render(Actions),
-    GenActions = get(actions),
-    RenderGenActions = wf:render(GenActions),
-    wf_context:clear_actions(),
-    {reply,wf:json([{eval,iolist_to_binary([Render,RenderGenActions])},
-                    {data,binary_to_list(term_to_binary(Message))}]),Req,State};
-
-info(Pro, Req, State) ->
-    Render = 
-        case Pro of
-            {flush,Actions} ->
-                                                % wf:info("Comet Actions: ~p",[Actions]),
-                wf:render(Actions);
-            <<"N2O,",Rest/binary>> ->
-                Module = State#context.module, Module:event(init),
-                InitActions = get(actions),
-                wf_context:clear_actions(),
-                Pid = wf:depickle(Rest),
-                                                %wf:info("Transition Pid: ~p",[Pid]),
-                case Pid of
-                    undefined -> 
-                                                %wf:info("Path: ~p",[wf:path(Req)]),
-                                                %wf:info("Module: ~p",[Module]),
-                        Elements = try Module:main() catch C:E -> wf:error_page(C,E) end,
-                        wf_core:render(Elements),
-                        render_actions(InitActions);
-
-                    Transition ->
-                        X = Pid ! {'N2O',self()},
-                        R = receive Actions -> [ render_actions(InitActions) | wf:render(Actions) ]
-                            after 100 ->
-                                    QS = element(14, Req),
-                                    wf:redirect(case QS of <<>> -> ""; _ -> "" ++ "?" ++ wf:to_list(QS) end),
-                                    []
-                            end,
-                        R
-                end;
-            <<"PING">> -> [];
-            Unknown ->
-                wf:info("Unknown WS Info Message ~p", [Unknown]),
-                M = State#context.module,
-                catch M:event(Unknown),
-                Actions = get(actions),
-                wf_context:clear_actions(),
-                wf:render(Actions) end,
-    GenActions = get(actions),
-    wf_context:clear_actions(),
-    RenderGenActions = wf:render(GenActions),
-    wf_context:clear_actions(),
-    JS = iolist_to_binary([Render,RenderGenActions]),
-    {reply, wf:json([{eval,JS}]), Req, State}.
-
-terminate(_Req, _State=#context{module=Module}) ->
-    % wf:info("Bullet Terminated~n"),
-    Res = ets:update_counter(globals,onlineusers,{2,-1}),
-    wf:send(broadcast,{counter,Res}),
-    catch Module:event(terminate),
-    ok.

+ 2 - 2
apps/face/src/web_sup.erl

@@ -14,7 +14,7 @@ start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []).
 
 
 init([]) ->
 init([]) ->
 
 
-    {ok, _} = cowboy:start_http(http, 100, [{port, 8000}],
+    {ok, _} = cowboy:start_http(http, 100, [{port, wf:config(n2o,transition_port,8000)}],
                                            [{env, [{dispatch, dispatch_rules()}]}]),
                                            [{env, [{dispatch, dispatch_rules()}]}]),
 
 
     users:init(),
     users:init(),
@@ -29,6 +29,6 @@ dispatch_rules() ->
                                                 {mimetypes, {fun mimetypes:path_to_mimes/2, default}}]},
                                                 {mimetypes, {fun mimetypes:path_to_mimes/2, default}}]},
             {"/rest/:resource", rest_cowboy, []},
             {"/rest/:resource", rest_cowboy, []},
             {"/rest/:resource/:id", rest_cowboy, []},
             {"/rest/:resource/:id", rest_cowboy, []},
-            {"/ws/[...]", bullet_handler, [{handler, n2o_game}]},
+            {"/ws/[...]", bullet_handler, [{handler, n2o_bullet}]},
             {'_', n2o_cowboy, []}
             {'_', n2o_cowboy, []}
     ]}]).
     ]}]).

+ 1 - 1
apps/server/include/settings.hrl

@@ -4,6 +4,6 @@
 -define(SKILL_SEED, begin {ok, X}      = kvs:get(config, "games/okey/skill_seed", 500), X end). %% skill value for new player
 -define(SKILL_SEED, begin {ok, X}      = kvs:get(config, "games/okey/skill_seed", 500), X end). %% skill value for new player
 -define(IS_TEST, begin {ok, X}         = kvs:get(config,"debug/is_test", false), X end). %% determines if code is executed in test
 -define(IS_TEST, begin {ok, X}         = kvs:get(config,"debug/is_test", false), X end). %% determines if code is executed in test
 -define(ALL_SESSIONS, <<"all_sessions_topic">>).
 -define(ALL_SESSIONS, <<"all_sessions_topic">>).
--define(TEST_TOKEN, "EBAs6dg2Xw6XuCdg8qiPmlBLgYJ6N4Ti0P+oGpWgYz4NW4nBBUzTe/wAuLYtPnjFpsjCExxSpV78fipmsPxcf+NGy+QKIM6rmVJhpnIlKf0bpFNuGaAPjZAWthhGO8nZ0V8UnA==").
+-define(TEST_TOKEN,  "EBAs6dg2Xw6XuCdg8qiPmlBLgYJ6N4Ti0P+oGpWgYz4NW4nBBUzTe/wAuLYtPnjFpsjCExxSpV78fipmsPxcf+NGy+QKIM6rmVJhpnIlKf0bpFNuGaAPjZAWthhGO8nZ0V8UnA==").
 -define(TEST_TOKEN2, "EBAs6dg2Xw6XuCdg8qiPmlBLgYJ6N4Ti0P+oGpWgYz4NW4nBBUzTe/wAuLYtPnjFpsjCExxSpV78fipmsPxcf+NGy+QKIM6rmVJhpnIlKf0bpFNuGaAPjZAWthhGO8nZ0V8Un2==").
 -define(TEST_TOKEN2, "EBAs6dg2Xw6XuCdg8qiPmlBLgYJ6N4Ti0P+oGpWgYz4NW4nBBUzTe/wAuLYtPnjFpsjCExxSpV78fipmsPxcf+NGy+QKIM6rmVJhpnIlKf0bpFNuGaAPjZAWthhGO8nZ0V8Un2==").
 -define(PAIRED_TAVLA_ASYNC, false).
 -define(PAIRED_TAVLA_ASYNC, false).

+ 25 - 26
apps/server/src/auth_server.erl

@@ -8,6 +8,7 @@
 
 
 -behaviour(gen_server).
 -behaviour(gen_server).
 
 
+-compile(export_all).
 -export([store_token/3,start_link/0,
 -export([store_token/3,start_link/0,
          robot_credentials/0,
          robot_credentials/0,
          fake_credentials/0,
          fake_credentials/0,
@@ -63,37 +64,33 @@ handle_call({store_token, GameId, Token, UserId}, _From, #state{tokens = E} = St
     {reply, Token, State};
     {reply, Token, State};
 
 
 handle_call({get_user_info, Token}, _From, #state{tokens = E} = State) ->
 handle_call({get_user_info, Token}, _From, #state{tokens = E} = State) ->
-    ?INFO("checking token: ~p", [Token]),
+    gs:info("checking token: ~p", [Token]),
     case ets:lookup(E, Token) of
     case ets:lookup(E, Token) of
         [] ->
         [] ->
-            ?INFO("token not found", []),
+            gs:info("token not found", []),
             {reply, false, State};
             {reply, false, State};
         List ->
         List ->
             {authtoken, _, UserId} = hd(List),
             {authtoken, _, UserId} = hd(List),
-            ?INFO("token was registred, getting user info for ~p",[UserId]),
-	            proc_lib:spawn_link(fun() ->
-                                        Reply =
-                                            case user_info(UserId) of
-                                                {ok, UserInfo} ->
-                                                    ?INFO("..user info retrieved", []),
-                                                    UserInfo;
-                                                {error, user_not_found} ->
-                                                    ?INFO("..no such user info, providing fake credentials", []),
-                                                    fake_credentials0(State#state.spare); %% for eunit tests. FIX
-                                                {badrpc, _} ->
-                                                    ?INFO("..bad rpc, providing fake credentials", []),
-                                                    fake_credentials0(State#state.spare)  %% for eunit tests. FIX
-                                            end,
-                                        gen_server:reply(_From, Reply)
-                                end),
-            {noreply, State}
+            gs:info("token was registred, getting user info for ~p",[UserId]),
+            Reply = case user_info(UserId) of
+                {ok, UserInfo} ->
+                    gs:info("..user info retrieved", []),
+                    UserInfo;
+                {error, user_not_found} ->
+                    gs:info("..no such user info, providing fake credentials", []),
+                    fake_credentials0(State#state.spare); %% for eunit tests. FIX
+                {badrpc, _} ->
+                    gs:info("..bad rpc, providing fake credentials", []),
+                    fake_credentials0(State#state.spare)  %% for eunit tests. FIX
+            end,
+            {reply, Reply, State}
     end;
     end;
 
 
 handle_call({get_user_info, Token, Id}, _From, #state{tokens = E} = State) ->
 handle_call({get_user_info, Token, Id}, _From, #state{tokens = E} = State) ->
-    ?INFO("checking token: ~p", [Token]),
+    gs:info("checking token: ~p", [Token]),
     case ets:lookup(E, Token) of
     case ets:lookup(E, Token) of
         [] ->
         [] ->
-            ?INFO("token not found", []),
+            gs:error("token not found", []),
             {reply, false, State};
             {reply, false, State};
         _List ->
         _List ->
             Reply0 = fake_credentials0(State#state.spare),
             Reply0 = fake_credentials0(State#state.spare),
@@ -113,24 +110,26 @@ code_change(_OldVsn, State, _Extra) -> {ok, State}.
 fake_credentials0(Spare) ->
 fake_credentials0(Spare) ->
     Pos = crypto:rand_uniform(1, length(Spare)),
     Pos = crypto:rand_uniform(1, length(Spare)),
     H0 = lists:nth(Pos, Spare),
     H0 = lists:nth(Pos, Spare),
-    Id = list_to_binary(binary_to_list(H0#'PlayerInfo'.login) ++ integer_to_list(id_generator:get_id2())),
+    Id = list_to_binary(binary_to_list(H0#'PlayerInfo'.login) ++
+         integer_to_list(id_generator:get_id2())),
     H0#'PlayerInfo'{id = Id}.
     H0#'PlayerInfo'{id = Id}.
 
 
 store_token(GameId, E, Token, UserId) ->
 store_token(GameId, E, Token, UserId) ->
-    ?INFO("storing token: ~p", [Token]),
+    gs:info("storing token: ~p", [Token]),
     Data = #authtoken{token = Token, id = UserId},
     Data = #authtoken{token = Token, id = UserId},
     ets:insert(E, Data).
     ets:insert(E, Data).
 
 
 user_info(UserId) ->
 user_info(UserId) ->
     case nsm_auth:get_user_info(UserId) of
     case nsm_auth:get_user_info(UserId) of
         {ok, UserData} ->
         {ok, UserData} ->
+            gs:info("User Data: ~p",[UserData]),
             {ok, #'PlayerInfo'{id = list_to_binary(UserData#user_info.username),
             {ok, #'PlayerInfo'{id = list_to_binary(UserData#user_info.username),
                                login = list_to_binary(UserData#user_info.username),
                                login = list_to_binary(UserData#user_info.username),
-                               name = utils:convert_if(UserData#user_info.name, binary),
-                               avatar_url = utils:convert_if(UserData#user_info.avatar_url, binary),
+                               name = wf:to_binary(UserData#user_info.name),
+                               avatar_url = wf:to_binary(UserData#user_info.avatar_url),
                                skill = UserData#user_info.skill,
                                skill = UserData#user_info.skill,
                                score = UserData#user_info.score,
                                score = UserData#user_info.score,
-                               surname = utils:convert_if(UserData#user_info.surname, binary)}};
+                               surname = wf:to_binary(UserData#user_info.surname)}};
         Error ->
         Error ->
             Error
             Error
     end.
     end.

+ 20 - 20
apps/server/src/game_session.erl

@@ -47,11 +47,11 @@ bot_session_attach(Pid, UserInfo) ->
 % TODO: in case of game requests from web page handle them here
 % TODO: in case of game requests from web page handle them here
 
 
 process_request(Pid, Msg) ->
 process_request(Pid, Msg) ->
-    ?INFO("API payload ~p pid ~p",[Msg,Pid]),
+    gs:info("API payload ~p pid ~p",[Msg,Pid]),
     gen_server:call(Pid, {client_request, Msg}).
     gen_server:call(Pid, {client_request, Msg}).
 
 
 process_request(Pid, Source, Msg) ->
 process_request(Pid, Source, Msg) ->
-    ?INFO("API from ~p payload ~p pid ~p",[Source,Msg,Pid]),
+    gs:info("API from ~p payload ~p pid ~p",[Source,Msg,Pid]),
     gen_server:call(Pid, {client_request, Msg}).
     gen_server:call(Pid, {client_request, Msg}).
 
 
 init([RPC]) ->
 init([RPC]) ->
@@ -62,7 +62,7 @@ handle_call({client_request, Request}, From, State) ->
     handle_client_request(Request, From, State);
     handle_client_request(Request, From, State);
 
 
 handle_call(Request, From, State) ->
 handle_call(Request, From, State) ->
-    ?INFO("unrecognized call: ~p", [Request]),
+    gs:info("unrecognized call: ~p", [Request]),
     {stop, {unknown_call, From, Request}, State}.
     {stop, {unknown_call, From, Request}, State}.
 
 
 
 
@@ -71,7 +71,7 @@ handle_cast({bot_session_attach, UserInfo}, State = #state{user = undefined}) ->
     {noreply, State#state{user = UserInfo}};
     {noreply, State#state{user = UserInfo}};
 
 
 handle_cast(Msg, State) ->
 handle_cast(Msg, State) ->
-    ?INFO("session: unrecognized cast: ~p", [Msg]),
+    gs:info("session: unrecognized cast: ~p", [Msg]),
     {stop, {error, {unknown_cast, Msg}}, State}.
     {stop, {error, {unknown_cast, Msg}}, State}.
 
 
 
 
@@ -79,7 +79,7 @@ handle_info({relay_event, SubscrId, RelayMsg}, State) ->
     handle_relay_message(RelayMsg, SubscrId, State);
     handle_relay_message(RelayMsg, SubscrId, State);
 
 
 handle_info({relay_kick, SubscrId, Reason}, State) ->
 handle_info({relay_kick, SubscrId, Reason}, State) ->
-    ?INFO("Recived a kick notification from the table: ~p", [Reason]),
+    gs:info("Recived a kick notification from the table: ~p", [Reason]),
     handle_relay_kick(Reason, SubscrId, State);
     handle_relay_kick(Reason, SubscrId, State);
 
 
 handle_info({delivery, ["user_action", Action, Who, Whom], _} = Notification,
 handle_info({delivery, ["user_action", Action, Who, Whom], _} = Notification,
@@ -87,7 +87,7 @@ handle_info({delivery, ["user_action", Action, Who, Whom], _} = Notification,
                    user = User,
                    user = User,
                    rpc = RPC
                    rpc = RPC
                   } = State) ->
                   } = State) ->
-    ?INFO("~w:handle_info/2 Delivery: ~p", [?MODULE, Notification]),
+    gs:info("~w:handle_info/2 Delivery: ~p", [?MODULE, Notification]),
     UserId = User#'PlayerInfo'.id,
     UserId = User#'PlayerInfo'.id,
     case list_to_binary(Who) of
     case list_to_binary(Who) of
         UserId ->
         UserId ->
@@ -119,7 +119,7 @@ handle_info({delivery, ["user_action", Action, Who, Whom], _} = Notification,
 
 
 
 
 handle_info({'DOWN', MonitorRef, _Type, _Object, _Info} = Msg, State = #state{rpc_mon = MonitorRef}) ->
 handle_info({'DOWN', MonitorRef, _Type, _Object, _Info} = Msg, State = #state{rpc_mon = MonitorRef}) ->
-    ?INFO("connection closed, shutting down session:~p", [Msg]),
+    gs:info("connection closed, shutting down session:~p", [Msg]),
     {stop, normal, State};
     {stop, normal, State};
 
 
 handle_info({'DOWN', OtherRef, process, _Object, Info} = _Msg,
 handle_info({'DOWN', OtherRef, process, _Object, Info} = _Msg,
@@ -136,11 +136,11 @@ handle_info({'DOWN', OtherRef, process, _Object, Info} = _Msg,
     end;
     end;
 
 
 handle_info(Info, State) ->
 handle_info(Info, State) ->
-    ?INFO("session: unrecognized info: ~p", [Info]),
+    gs:info("session: unrecognized info: ~p", [Info]),
     {noreply, State}.
     {noreply, State}.
 
 
 terminate(Reason, #state{rels_notif_channel = RelsChannel}) ->
 terminate(Reason, #state{rels_notif_channel = RelsChannel}) ->
-    ?INFO("terminating session. reason: ~p", [Reason]),
+    wf:info("terminating session. reason: ~p", [Reason]),
     if RelsChannel =/= undefined -> nsm_mq_channel:close(RelsChannel);
     if RelsChannel =/= undefined -> nsm_mq_channel:close(RelsChannel);
        true -> do_nothing end,
        true -> do_nothing end,
     ok.
     ok.
@@ -152,31 +152,31 @@ code_change(_OldVsn, State, _Extra) ->
 
 
 handle_client_request(#session_attach{token = Token}, _From,
 handle_client_request(#session_attach{token = Token}, _From,
                       #state{user = undefined} = State) ->
                       #state{user = undefined} = State) ->
-    ?INFO("checking session token: ~p", [Token]),
+    gs:info("checking session token: ~p", [Token]),
     case auth_server:get_user_info(Token) of
     case auth_server:get_user_info(Token) of
         false ->
         false ->
-            ?INFO("failed session attach: ~p", [Token]),
+            gs:error("failed session attach: ~p", [Token]),
             {stop, normal, {error, invalid_token}, State};
             {stop, normal, {error, invalid_token}, State};
         UserInfo ->
         UserInfo ->
-            ?INFO("successfull session attach. Your user info: ~p", [UserInfo]),
+            gs:info("successfull session attach. Your user info: ~p", [UserInfo]),
             {reply, UserInfo, State#state{user = UserInfo}}
             {reply, UserInfo, State#state{user = UserInfo}}
     end;
     end;
 
 
 handle_client_request(#session_attach_debug{token = Token, id = Id}, _From,
 handle_client_request(#session_attach_debug{token = Token, id = Id}, _From,
                       #state{user = undefined} = State) ->
                       #state{user = undefined} = State) ->
-    ?INFO("checking debug session token: ~p", [{Token,Id}]),
+    gs:info("checking debug session token: ~p", [{Token,Id}]),
     case {?IS_TEST, auth_server:get_user_info(Token, Id)} of
     case {?IS_TEST, auth_server:get_user_info(Token, Id)} of
         {_Test, false} ->
         {_Test, false} ->
-            ?INFO("... ~p", [{_Test,false}]),
+            gs:error("... ~p", [{_Test,false}]),
             {stop, normal, {error, invalid_token}, State};
             {stop, normal, {error, invalid_token}, State};
         {false, true} ->
         {false, true} ->
-            ?INFO("... ~p", [{false,true}]),
+            gs:error("... ~p", [{false,true}]),
             {stop, normal, {error, invalid_token}, State};
             {stop, normal, {error, invalid_token}, State};
         {true, UserInfo} ->
         {true, UserInfo} ->
-            ?INFO("... ~p", [{true,UserInfo}]),
+            gs:info("... ~p", [{true,UserInfo}]),
             {reply, UserInfo, State#state{user = UserInfo}};
             {reply, UserInfo, State#state{user = UserInfo}};
         {false, UserInfo} ->
         {false, UserInfo} ->
-            ?INFO("... ~p", [{true,UserInfo}]),
+            gs:info("... ~p", [{true,UserInfo}]),
             {reply, UserInfo, State#state{user = UserInfo}}
             {reply, UserInfo, State#state{user = UserInfo}}
     end;
     end;
 
 
@@ -421,9 +421,9 @@ handle_relay_message(Msg, _SubscrId, #state{rpc = RPC} = State) ->
         E -> error_logger:info_msg("ERROR SEND MESSAGE TO PLAYER: ~p",[E]),
         E -> error_logger:info_msg("ERROR SEND MESSAGE TO PLAYER: ~p",[E]),
             {stop, normal, State}
             {stop, normal, State}
     catch
     catch
-        exit:{normal, {gen_server,call, [RPC, {send_message, _}]}} ->
+        exit:{normal, {gen_server,call, [RPC, {server, _}]}} ->
             {stop, normal, State};
             {stop, normal, State};
-        exit:{noproc, {gen_server,call, [RPC, {send_message, _}]}} ->
+        exit:{noproc, {gen_server,call, [RPC, {server, _}]}} ->
             {stop, normal, State};
             {stop, normal, State};
         E:R ->
         E:R ->
             {stop, normal, State}
             {stop, normal, State}
@@ -493,4 +493,4 @@ get_relay(GameId, GameList) ->
 
 
 send_message_to_player(Pid, Message) ->
 send_message_to_player(Pid, Message) ->
     ?INFO("MESSAGE to ~p ~p",[Pid,Message]),
     ?INFO("MESSAGE to ~p ~p",[Pid,Message]),
-    Pid ! {send_message,Message}, ok.
+    Pid ! {server,Message}, ok.

+ 9 - 0
apps/server/src/gs.erl

@@ -0,0 +1,9 @@
+-module(gs).
+-compile(export_all).
+
+info(String, Args) ->  error_logger:info_msg(String, Args).
+info(String) -> error_logger:info_msg(String).
+warning(String, Args) -> error_logger:warning_msg(String, Args).
+warning(String) -> error_logger:warning_msg(String).
+error(String, Args) -> error_logger:error_msg(String, Args).
+error(String) -> error_logger:error_msg(String).

+ 2 - 2
apps/server/src/nsm_auth.erl

@@ -54,7 +54,7 @@ get_all_user() -> {ok, kvs:all(user)}.
 generate_token(User) ->
 generate_token(User) ->
     Token = generate_token0(),
     Token = generate_token0(),
     Res = auth_server:store_token(0, Token, User),
     Res = auth_server:store_token(0, Token, User),
-    ?INFO("with result :~p~n", [Res]),
+    gs:info("with result :~p~n", [Res]),
     Token.
     Token.
 
 
 generate_token0() -> T0 = crypto:rand_bytes(100), T = base64:encode(T0), T.
 generate_token0() -> T0 = crypto:rand_bytes(100), T = base64:encode(T0), T.
@@ -64,7 +64,7 @@ build_user_info(#user{username = UserName,
                       surnames = Surname,
                       surnames = Surname,
                       birth = Age,
                       birth = Age,
                       sex = Sex} = User) ->
                       sex = Sex} = User) ->
-    #user_info{username = UserName,
+    #user_info{username = Name,
                name = Name,
                name = Name,
                surname = Surname,
                surname = Surname,
                age = Age,
                age = Age,

+ 3 - 3
apps/server/src/okey/game_okey_bot.erl

@@ -32,7 +32,7 @@
         request_id = 0
         request_id = 0
     }).
     }).
 
 
-send_message(Pid, Message) -> gen_server:call(Pid, {send_message, Message}).
+send_message(Pid, Message) -> gen_server:call(Pid, {server, Message}).
 call_rpc(Pid, Message) -> gen_server:call(Pid, {call_rpc, Message}).
 call_rpc(Pid, Message) -> gen_server:call(Pid, {call_rpc, Message}).
 get_session(Pid) -> gen_server:call(Pid, get_session).
 get_session(Pid) -> gen_server:call(Pid, get_session).
 init_state(Pid, Situation) -> gen_server:cast(Pid, {init_state, Situation}).
 init_state(Pid, Situation) -> gen_server:cast(Pid, {init_state, Situation}).
@@ -47,7 +47,7 @@ init([Owner, PlayerInfo, GameId]) ->
     ?INFO("BOTMODULE ~p started with game_session pid ~p", [UId,SPid]),
     ?INFO("BOTMODULE ~p started with game_session pid ~p", [UId,SPid]),
     {ok, #state{user = PlayerInfo, uid = UId, owner = Owner, gid = GameId, session = SPid}}.
     {ok, #state{user = PlayerInfo, uid = UId, owner = Owner, gid = GameId, session = SPid}}.
 
 
-handle_call({send_message, Msg0}, _From, #state{uid = UId, bot = BPid} = State) ->
+handle_call({server, Msg0}, _From, #state{uid = UId, bot = BPid} = State) ->
     Msg = flashify(Msg0),
     Msg = flashify(Msg0),
     ?INFO("OKEY BOT ~p: Resend message to bot process (~p): ~p",[UId, BPid, Msg0]),
     ?INFO("OKEY BOT ~p: Resend message to bot process (~p): ~p",[UId, BPid, Msg0]),
     BPid ! Msg,
     BPid ! Msg,
@@ -104,7 +104,7 @@ handle_info({'DOWN', Ref, process, _, Reason},
     ?INFO
     ?INFO
     ("relay goes down with reason ~p so does bot", [Reason]),
     ("relay goes down with reason ~p so does bot", [Reason]),
     {stop, Reason, State};
     {stop, Reason, State};
-handle_info({send_message,M}, #state{uid = UId, bot = BPid} = State) ->
+handle_info({server,M}, #state{uid = UId, bot = BPid} = State) ->
     BPid ! M,
     BPid ! M,
     {noreply, State};
     {noreply, State};
 handle_info(Info, State) ->
 handle_info(Info, State) ->

+ 3 - 3
apps/server/src/tavla/game_tavla_bot.erl

@@ -40,7 +40,7 @@
 
 
 % gen_server
 % gen_server
 
 
-send_message(Pid, Message) -> gen_server:call(Pid, {send_message, Message}).
+send_message(Pid, Message) -> gen_server:call(Pid, {server, Message}).
 call_rpc(Pid, Message) -> gen_server:call(Pid, {call_rpc, Message}).
 call_rpc(Pid, Message) -> gen_server:call(Pid, {call_rpc, Message}).
 get_session(Pid) -> gen_server:call(Pid, get_session).
 get_session(Pid) -> gen_server:call(Pid, get_session).
 init_state(Pid, Situation) -> gen_server:cast(Pid, {init_state, Situation}).
 init_state(Pid, Situation) -> gen_server:cast(Pid, {init_state, Situation}).
@@ -56,7 +56,7 @@ init([Owner, PlayerInfo, GameId]) ->
     {ok, #state{user = PlayerInfo, uid = UId, owner = Owner, gid = GameId, session = SPid}}.
     {ok, #state{user = PlayerInfo, uid = UId, owner = Owner, gid = GameId, session = SPid}}.
 
 
 
 
-handle_call({send_message, Msg0}, _From, State) ->
+handle_call({server, Msg0}, _From, State) ->
     BPid = State#state.bot,
     BPid = State#state.bot,
     Msg = flashify(Msg0),
     Msg = flashify(Msg0),
     BPid ! Msg,
     BPid ! Msg,
@@ -111,7 +111,7 @@ handle_cast(Msg, State) ->
 handle_info({'DOWN', Ref, process, _, Reason}, State = #state{owner_mon = OMon}) when OMon == Ref ->
 handle_info({'DOWN', Ref, process, _, Reason}, State = #state{owner_mon = OMon}) when OMon == Ref ->
     ?INFO("relay goes down with reason ~p so does bot", [Reason]),
     ?INFO("relay goes down with reason ~p so does bot", [Reason]),
     {stop, Reason, State};
     {stop, Reason, State};
-handle_info({send_message,M}, State) ->
+handle_info({server,M}, State) ->
     BPid = State#state.bot,
     BPid = State#state.bot,
     BPid ! M,
     BPid ! M,
     {noreply, State};
     {noreply, State};

+ 1 - 0
otp.mk

@@ -25,6 +25,7 @@ console: .applist
 	ERL_LIBS=$(ERL_LIBS) erl $(ERL_ARGS) -eval \
 	ERL_LIBS=$(ERL_LIBS) erl $(ERL_ARGS) -eval \
 		'[ok = application:ensure_started(A, permanent) || A <- $(shell cat .applist)]'
 		'[ok = application:ensure_started(A, permanent) || A <- $(shell cat .applist)]'
 start: $(RUN_DIR) $(LOG_DIR) .applist
 start: $(RUN_DIR) $(LOG_DIR) .applist
+	RUN_ERL_LOG_GENERATIONS=1000 RUN_ERL_LOG_MAXSIZE=20000000 \
 	ERL_LIBS=$(ERL_LIBS) run_erl -daemon $(RUN_DIR)/ $(LOG_DIR)/ "exec $(MAKE) console"
 	ERL_LIBS=$(ERL_LIBS) run_erl -daemon $(RUN_DIR)/ $(LOG_DIR)/ "exec $(MAKE) console"
 attach:
 attach:
 	to_erl $(RUN_DIR)/
 	to_erl $(RUN_DIR)/

+ 1 - 1
rels/web/files/sys.config

@@ -1,7 +1,7 @@
 [
 [
  {sync, [{sync_mode, nitrogen}]},
  {sync, [{sync_mode, nitrogen}]},
  {nsx_idgen, [{game_pool,5000000}]},
  {nsx_idgen, [{game_pool,5000000}]},
- {n2o, [{route,routes},{port,8000},{transition_port, 8000}]},
+ {n2o, [{route,routes},{transition_port, 8000}]},
  {kvs,
  {kvs,
      [{pass_init_db,true},
      [{pass_init_db,true},
       {nodes,[]},
       {nodes,[]},