Implementing a GenServer
In this recipe, we will implement a simple server that will store pairs of values (IP and UUID).This might be used, for instance, to store users of a system who are currently connected.
In this recipe, we will only store the provided information and respond to requests on whether a user with a given IP is connected or not.
Getting ready
We will implement a server using the OTP-defined GenServer behavior. We will need to implement the start_link
and init
functions and some callbacks to handle the messages our server receives (handle_call
or handle_cast
). To make the interaction with the server more pleasant, we will create some wrappers around the callbacks creating a client API.
Note
The GenServer-defined behavior enforces the separation between client and server. An example of it is the fact that start_link/3
happens in the client, while init/1
is its counterpart callback that runs on the server.
The handle_call
callback is a handler for synchronous calls while handle_cast...