aboutsummaryrefslogtreecommitdiff
path: root/lib/octonetcat/servers/echo.ex
blob: 0d7487f53baf8c4a31ac42deea47aac27b85409e (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
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.
  """

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

    serve(socket)
  end

  def read_line!(socket) do
    {:ok, line} = :gen_tcp.recv(socket, 0)
    line
  end

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