defmodule Server.Conn do require Logger use GenServer @impl true def init(_args) do initial_state = %{"num_conns" => 0} {:ok, initial_state} end @impl true def handle_call(_socket, _from, _state) do throw("call is unimplementedd") end @impl true def handle_cast(socket, state) do spawn(handle(socket)) %{"num_conns" => state.num_conns + 1} end defp handle(socket) do case :gen_tcp.recv(socket, 1024) do {:ok, packet} -> Logger.debug("[Server.Conn] packet #{packet}") {:error, reason} -> Logger.error("[Server.Conn] failed to read connection: #{reason}") end handle(socket) end end