aboutsummaryrefslogtreecommitdiff
path: root/lib/octochat/servers/echo.ex
blob: da048764a65151eb074af4609b717a7762dad23c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
defmodule Octochat.Echo do
  @moduledoc """
  Octochat Echo server
  """
  require Logger

  def serve(socket) do
    socket
      |> read_line()
      |> write_line!(socket)

    serve(socket)
  end

  defp 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

  defp write_line!(line, socket) do
    :gen_tcp.send(socket, line)
  end

end