Revision: 48434
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 1, 2011 13:15 by shian
Initial Code
-module(module).
-compile(export_all).
-behaviour(gen_server).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
%% Public API
start() ->
gen_server:start({local, ?MODULE}, ?MODULE, [], []).
stop() ->
gen_server:call(?MODULE, stop).
state() ->
gen_server:call(?MODULE, state).
%% Server implementation, a.k.a.: callbacks
init([]) ->
say("init", []),
{ok, []}.
handle_call(stop, _From, State) ->
say("stopping by ~p, state was ~p.", [_From, State]),
{stop, normal, stopped, State};
handle_call(state, _From, State) ->
say("~p is asking for the state.", [_From]),
{reply, State, State};
handle_call(_Request, _From, State) ->
say("call ~p, ~p, ~p.", [_Request, _From, State]),
{reply, ok, State}.
handle_cast(_Msg, State) ->
say("cast ~p, ~p.", [_Msg, State]),
{noreply, State}.
handle_info(_Info, State) ->
say("info ~p, ~p.", [_Info, State]),
{noreply, State}.
terminate(_Reason, _State) ->
say("terminate ~p, ~p", [_Reason, _State]),
ok.
code_change(_OldVsn, State, _Extra) ->
say("code_change ~p, ~p, ~p", [_OldVsn, State, _Extra]),
{ok, State}.
%% Some helper methods.
say(Format) ->
say(Format, []).
say(Format, Data) ->
io:format("~p:~p: ~s~n", [?MODULE, self(), io_lib:format(Format, Data)]).
Initial URL
Initial Description
Initial Title
template for gen_server
Initial Tags
Initial Language
Other