eralng gen_server模板

来源:互联网 发布:布什家族 知乎 编辑:程序博客网 时间:2024/05/21 20:29
%%%-------------------------------------------------------------------%%% @author Administrator%%% @copyright (C) 2014, <COMPANY>%%% @doc%%%%%% @end%%% Created : 22. 七月 2014 14:58%%%--------------------------------------------------------------------module(gen_server_template).-author("Administrator").-behaviour(gen_server).%% API-export([start_link/0]).%% gen_server callbacks-export([init/1,         handle_call/3,         handle_cast/2,         handle_info/2,         terminate/2,         code_change/3]).-define(SERVER, ?MODULE).-record(state, {}).%%%===================================================================%%% API%%%===================================================================%%--------------------------------------------------------------------%% @doc%% Starts the server%%%% @end%%---------------------------------------------------------------------spec(start_link() ->{ok, Pid :: pid()} | ignore | {error, Reason :: term()}).start_link() ->gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).%%%===================================================================%%% gen_server callbacks%%%===================================================================%%--------------------------------------------------------------------%% @private%% @doc%% Initializes the server%%%% @spec init(Args) -> {ok, State} |%%                     {ok, State, Timeout} |%%                     ignore |%%                     {stop, Reason}%% @end%%---------------------------------------------------------------------spec(init(Args :: term()) ->{ok, State :: #state{}} | {ok, State :: #state{}, timeout() | hibernate} |{stop, Reason :: term()} | ignore).init([]) ->{ok, #state{}}.%%--------------------------------------------------------------------%% @private%% @doc%% Handling call messages%%%% @end%%---------------------------------------------------------------------spec(handle_call(Request :: term(), From :: {pid(), Tag :: term()},                  State :: #state{}) ->                 {reply, Reply :: term(), NewState :: #state{}} |                 {reply, Reply :: term(), NewState :: #state{}, timeout() | hibernate} |                 {noreply, NewState :: #state{}} |                 {noreply, NewState :: #state{}, timeout() | hibernate} |                 {stop, Reason :: term(), Reply :: term(), NewState :: #state{}} |                 {stop, Reason :: term(), NewState :: #state{}}).handle_call(_Request, _From, State) ->{reply, ok, State}.%%--------------------------------------------------------------------%% @private%% @doc%% Handling cast messages%%%% @end%%---------------------------------------------------------------------spec(handle_cast(Request :: term(), State :: #state{}) ->{noreply, NewState :: #state{}} |{noreply, NewState :: #state{}, timeout() | hibernate} |{stop, Reason :: term(), NewState :: #state{}}).handle_cast(_Request, State) ->{noreply, State}.%%--------------------------------------------------------------------%% @private%% @doc%% Handling all non call/cast messages%%%% @spec handle_info(Info, State) -> {noreply, State} |%%                                   {noreply, State, Timeout} |%%                                   {stop, Reason, State}%% @end%%---------------------------------------------------------------------spec(handle_info(Info :: timeout() | term(), State :: #state{}) ->{noreply, NewState :: #state{}} |{noreply, NewState :: #state{}, timeout() | hibernate} |{stop, Reason :: term(), NewState :: #state{}}).handle_info(_Info, State) ->{noreply, State}.%%--------------------------------------------------------------------%% @private%% @doc%% This function is called by a gen_server when it is about to%% terminate. It should be the opposite of Module:init/1 and do any%% necessary cleaning up. When it returns, the gen_server terminates%% with Reason. The return value is ignored.%%%% @spec terminate(Reason, State) -> void()%% @end%%---------------------------------------------------------------------spec(terminate(Reason :: (normal | shutdown | {shutdown, term()} | term()),                State :: #state{}) -> term()).terminate(_Reason, _State) ->ok.%%--------------------------------------------------------------------%% @private%% @doc%% Convert process state when code is changed%%%% @spec code_change(OldVsn, State, Extra) -> {ok, NewState}%% @end%%---------------------------------------------------------------------spec(code_change(OldVsn :: term() | {down, term()}, State :: #state{},                  Extra :: term()) ->                 {ok, NewState :: #state{}} | {error, Reason :: term()}).code_change(_OldVsn, State, _Extra) ->{ok, State}.%%%===================================================================%%% Internal functions%%%===================================================================

0 0
原创粉丝点击