%% ---------------------------------------------------------------------------
|
|
%% @doc gen_server模板
|
|
%% @author hek
|
|
%% @since 2016-11-14
|
|
%% @deprecated
|
|
%% ---------------------------------------------------------------------------
|
|
|
|
-define(DEBUG_MODULE, none).
|
|
-define(DEBUG_REQUEST, none).
|
|
-define(LOCAL_DEBUG(Format, Args),
|
|
case ?MODULE of
|
|
?DEBUG_MODULE -> ?PRINT(Format, Args);
|
|
_ -> skip
|
|
end
|
|
).
|
|
-define(LOCAL_DEBUG(Request, Format, Args),
|
|
case {?MODULE, Request} of
|
|
{?DEBUG_MODULE, DEBUG_REQUEST} -> ?PRINT(Format, Args);
|
|
_ -> skip
|
|
end
|
|
).
|
|
|
|
%% --------------------------------------------------------------------------
|
|
%% Function: init/1
|
|
%% Description: Initiates the server
|
|
%% Returns: {ok, State} |
|
|
%% {ok, State, Timeout} |
|
|
%% ignore |
|
|
%% {stop, Reason}
|
|
%% --------------------------------------------------------------------------
|
|
-define(DO_INIT(Args),
|
|
case catch do_init(Args) of
|
|
{'EXIT', Reason} ->
|
|
?ERR("init error:~n~p~n", [Reason]),
|
|
{stop, Reason};
|
|
{ok, State} ->
|
|
{ok, State};
|
|
Other ->
|
|
{stop, Other}
|
|
end
|
|
).
|
|
|
|
%% --------------------------------------------------------------------------
|
|
%% Function: handle_call/3
|
|
%% Description: Handling call messages
|
|
%% Returns: {reply, Reply, State} |
|
|
%% {reply, Reply, State, Timeout} |
|
|
%% {noreply, State} |
|
|
%% {noreply, State, Timeout} |
|
|
%% {stop, Reason, Reply, State} | (terminate/2 is called)
|
|
%% {stop, Reason, State} (terminate/2 is called)
|
|
%% --------------------------------------------------------------------------
|
|
-define(DO_HANDLE_CALL(Request, From, State),
|
|
case catch do_handle_call(Request, From, State) of
|
|
{'EXIT', Reason} ->
|
|
?ERR("handle_call error:~n~p~n", [Reason]),
|
|
{reply, error, State};
|
|
{reply, Reply, NewState} ->
|
|
{reply, Reply, NewState};
|
|
_ ->
|
|
{reply, true, State}
|
|
end
|
|
).
|
|
|
|
%% --------------------------------------------------------------------------
|
|
%% Function: handle_cast/2
|
|
%% Description: Handling cast messages
|
|
%% Returns: {noreply, State} |
|
|
%% {noreply, State, Timeout} |
|
|
%% {stop, Reason, State} (terminate/2 is called)
|
|
%% --------------------------------------------------------------------------
|
|
-define(DO_HANDLE_CAST(Msg, State),
|
|
case catch do_handle_cast(Msg, State) of
|
|
{'EXIT', Reason} ->
|
|
?ERR("handle_cast error:~n~p~n", [Reason]),
|
|
{noreply, State};
|
|
{noreply, NewState} ->
|
|
{noreply, NewState};
|
|
{stop, normal, NewState} ->
|
|
{stop, normal, NewState};
|
|
_ ->
|
|
{noreply, State}
|
|
end
|
|
).
|
|
|
|
%% --------------------------------------------------------------------------
|
|
%% Function: handle_info/2
|
|
%% Description: Handling all non call/cast messages
|
|
%% Returns: {noreply, State} |
|
|
%% {noreply, State, Timeout} |
|
|
%% {stop, Reason, State} (terminate/2 is called)
|
|
%% --------------------------------------------------------------------------
|
|
-define(DO_HANDLE_INFO(Info, State),
|
|
case catch do_handle_info(Info, State) of
|
|
{'EXIT', Reason} ->
|
|
?ERR("handle_info error:~n~p~n", [Reason]),
|
|
{noreply, State};
|
|
{noreply, NewState} ->
|
|
{noreply, NewState};
|
|
_ ->
|
|
{noreply, State}
|
|
end
|
|
).
|
|
|
|
%% --------------------------------------------------------------------------
|
|
%% Function: terminate/2
|
|
%% Description: Shutdown the server
|
|
%% Returns: any (ignored by gen_server)
|
|
%% --------------------------------------------------------------------------
|
|
-define(DO_TERMINATE(Reason, State),
|
|
case catch do_terminate(Reason, State) of
|
|
ok -> ok;
|
|
{'EXIT', Reason} ->
|
|
?ERR("terminate error:~n~p~n", [Reason]),
|
|
{noreply, State};
|
|
{noreply, NewState} ->
|
|
{noreply, NewState};
|
|
_ ->
|
|
{noreply, State}
|
|
end
|
|
).
|
|
|
|
%% --------------------------------------------------------------------------
|
|
%% Func: code_change/3
|
|
%% Purpose: Convert process state when code is changed
|
|
%% Returns: {ok, NewState}
|
|
%% --------------------------------------------------------------------------
|
|
-define(DO_CODE_CHANGE(OldVsn, State, Extra),
|
|
case catch do_code_change(OldVsn, State, Extra) of
|
|
{ok, NewState} -> {ok, NewState};
|
|
{'EXIT', Reason} ->
|
|
?ERR("code_change error:~n~p~n", [Reason]),
|
|
{ok, State};
|
|
{noreply, NewState} ->
|
|
{ok, NewState};
|
|
_ ->
|
|
{ok, State}
|
|
end
|
|
).
|