defmodule Octonetcat.Accepter do @moduledoc """ Simple Socket/Connection Accepter """ require Logger @listen_port Application.get_env(:octonetcat, :listen_port) || 9999 def accept do {:ok, socket} = :gen_tcp.listen( @listen_port, [:binary, packet: :line, active: false, reuseaddr: true]) loop_accepter(socket) end defp loop_accepter(socket) do {:ok, client} = :gen_tcp.accept(socket) Logger.info("Accepted connection") Logger.info("Passing to Echo Server") {:ok, pid} = Octonetcat.ServerSupervisor.start_server(client) :ok = :gen_tcp.controlling_process(client, pid) loop_accepter(socket) end end