defmodule Broadcast.ClientHandler do
  use Task

  def start(sock) do
    Task.start_link(__MODULE__, :handle, [sock])
  end

  def handle(sock) do
    case :gen_tcp.recv(sock, 0) do
      {:ok, line} ->
        Broadcast.Server.broadcast("Someone said: " <> line)
        handle(sock)

      {:error, _} ->
        :gen_tcp.close(sock)
        Broadcast.Server.remove_client()
    end
  end
end