| -module(dummy_server). |
| -behaviour(gen_server). |
| |
| -export([start_link/0, set_state/1, get_state/0]). |
| |
| -export([init/1, |
| handle_call/3, |
| handle_cast/2, |
| handle_info/2, |
| terminate/2, |
| code_change/3]). |
| |
| %% |
| |
| start_link() -> |
| gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). |
| |
| set_state(What) -> |
| gen_server:call(?MODULE, {set_state, What}). |
| |
| get_state() -> |
| gen_server:call(?MODULE, get_state). |
| |
| |
| %% |
| |
| init([]) -> |
| say("init, setting state to 0", []), |
| {ok, 0}. |
| |
| |
| handle_call({set_state, NewState}, _From, _State) -> |
| {reply, {ok, NewState}, NewState}; |
| |
| handle_call(get_state, _From, State) -> |
| {reply, State, State}. |
| |
| handle_cast('__not_implemented', 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}. |
| |
| %% Internal |
| |
| say(Format, Data) -> |
| io:format("~p:~p: ~s~n", [?MODULE, self(), io_lib:format(Format, Data)]). |