gen_server:start(ModuleName, Arguments, Options) -> {ok, Pid} | {error, Reason}
gen_server:start(ServerName, ModuleName, Arguments, Options) -> {ok, Pid} | {error, Reason}
(Also gen_server:star_link/3 and gen_server:start_link/4 variants)
gen_server:call(PidOrName, Message) -> ReplyMessage
gen_server:call(PidOrName, Message, Timeout)
gen_server:cast(PidOrName, Message)
-module(your_module_name).
-behaviour(gen_server).
init(Arguments) -> {ok, InitialState} | {stop, Reason}
handle_call(Message, From, CurrentState) -> {reply, ReplyMessage, NewState} | {noreply, NewState} | {stop, Reason, NewState}
handle_cast(Message, CurrentState) -> {noreply, NewState} | {stop, NewState}
handle_info(Message, CurrentState) -> {noreply, NewState} | {stop, NewState}
terminate(Reason, State) -> ReturnValueIgnored