Book Image

Elixir Cookbook

By : Paulo Pereira
Book Image

Elixir Cookbook

By: Paulo Pereira

Overview of this book

Table of Contents (16 chapters)
Elixir Cookbook
About the Author
About the Reviewers

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.


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:

  1. Implement the handle_info/2 function:

    def handle_info(info, state) do
      IO.puts("Received info message #{inspect(info)}")
      {:noreply, state}
  2. Implement the terminate/2 function:

    def terminate(reason, state) do