-module(agSslAgencyExm). -compile(inline). -compile({inline_size, 128}). -export([ start_link/3 , init_it/3 , system_code_change/4 , system_continue/3 , system_get_state/1 , system_terminate/4 ]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% genExm start %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec start_link(module(), term(), [proc_lib:spawn_option()]) -> {ok, pid()}. start_link(ServerName, Args, SpawnOpts) -> proc_lib:start_link(?MODULE, init_it, [ServerName, self(), Args], infinity, SpawnOpts). init_it(ServerName, Parent, Args) -> case safeRegister(ServerName) of true -> process_flag(trap_exit, true), moduleInit(Parent, Args); {false, Pid} -> proc_lib:init_ack(Parent, {error, {alreadyStarted, Pid}}) end. -spec system_code_change(term(), module(), undefined | term(), term()) -> {ok, term()}. system_code_change(MiscState, _Module, _OldVsn, _Extra) -> {ok, MiscState}. -spec system_continue(pid(), [], {module(), term(), term()}) -> ok. system_continue(_Parent, _Debug, {Parent, SrvState, CliState}) -> loop(Parent, SrvState, CliState). -spec system_get_state(term()) -> {ok, term()}. system_get_state({_Parent, SrvState, _CliState}) -> {ok, SrvState}. -spec system_terminate(term(), pid(), [], term()) -> none(). system_terminate(Reason, _Parent, _Debug, {_Parent, SrvState, CliState}) -> terminate(Reason, SrvState, CliState). safeRegister(ServerName) -> try register(ServerName, self()) of true -> true catch _:_ -> {false, whereis(ServerName)} end. moduleInit(Parent, Args) -> case agSslAgencyIns:init(Args) of {ok, SrvState, CliState} -> proc_lib:init_ack(Parent, {ok, self()}), loop(Parent, SrvState, CliState); {stop, Reason} -> proc_lib:init_ack(Parent, {error, Reason}), exit(Reason) end. loop(Parent, SrvState, CliState) -> receive {system, From, Request} -> sys:handle_system_msg(Request, From, Parent, ?MODULE, [], {Parent, SrvState, CliState}); {'EXIT', Parent, Reason} -> terminate(Reason, SrvState, CliState); Msg -> {ok, NewSrvState, NewCliState} = agSslAgencyIns:handleMsg(Msg, SrvState, CliState), loop(Parent, NewSrvState, NewCliState) end. terminate(Reason, SrvState, CliState) -> agSslAgencyIns:terminate(Reason, SrvState, CliState), exit(Reason). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% genExm end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%