defmodule Octonetcat.Echo do @moduledoc """ Echo TCP Socket Server Started under a task supervisor, lives for the life of the socket, dies on failure or disconnect. """ require Logger def serve(socket) do socket |> read_line() |> write_line!(socket) serve(socket) end def read_line(socket) do case :gen_tcp.recv(socket, 0) do {:ok, line} -> line {:error, reason} -> Logger.error(reason) Process.exit(self(), :normal) end end def write_line!(line, socket) do :gen_tcp.send(socket, line) end end