This repository has been archived on 2025-08-18. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
GGS/src/ggs_stats.erl
2011-04-26 14:11:18 +02:00

47 lines
1.1 KiB
Erlang

-module(ggs_stats).
-export([start_link/0, message/0, print/0, tick/0]).
-behaviour(gen_server).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
-vsn(0).
-record(ate, { count = 0 }).
-define(SERVER, ?MODULE).
message() ->
gen_server:cast(ggs_stats, add_one).
print() ->
gen_server:cast(ggs_stats, print).
tick() ->
print(),
gen_server:cast(ggs_stats, tick),
timer:apply_after(1000, ggs_stats, tick, []).
start_link() ->
gen_server:start_link({local, ?SERVER}, ?MODULE, [0], []).
init([Count]) ->
St = #ate{ count = Count },
{ok, St}.
handle_cast(add_one, St) ->
NewSt = #ate { count = St#ate.count + 1},
{noreply, NewSt};
handle_cast(print, St) ->
erlang:display(St#ate.count),
{noreply, St};
handle_cast(tick, _St) ->
NewSt = #ate { count = 0 },
{noreply, NewSt}.
handle_call(_Request, _From, St) -> {stop, unimplemented, St}.
handle_info(_Info, St) -> {stop, unimplemented, St}.
terminate(_Reason, _St) -> ok.
code_change(_OldVsn, St, _Extra) -> {ok, St}.