Expanding our server
Our server implementation lacks a few things. How to stop it gracefully and how to upgrade its code?
Our current implementation (right below the ## Callbacks (Server API)
comment) has three of the six callbacks that form the GenServer base skeleton. The ones missing are handle_info/2
, terminate/2
, and code_change/3
.
We will be implementing all of these functions in this recipe.
Note
The GenServer provides default implementations for all :gen_server
callbacks. This is the reason we can get away without having to define all of them explicitly, like we did in Erlang.
Getting ready
To start, we need to load the connection_tracker.ex
module in a code editor.
How to do it…
We will follow these steps to implement the functions and make our server a full-blown GenServer:
Implement the
handle_info/2
function:def handle_info(info, state) do IO.puts("Received info message #{inspect(info)}") {:noreply, state} end
Implement the
terminate/2
function:def terminate(reason, state) do IO...