/ Published in: Other
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
-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)]).