Skip to main content

lib/http/transport.ex

defmodule HTTP.Transport do
  @moduledoc false

  @type socket :: port() | :ssl.sslsocket()
  @type message :: {:data, binary()} | :closed | {:error, term()} | :unknown

  @callback connect(String.t(), non_neg_integer(), keyword(), timeout()) ::
              {:ok, socket()} | {:error, term()}
  @callback controlling_process(socket(), pid()) :: :ok | {:error, term()}
  @callback send(socket(), iodata()) :: :ok | {:error, term()}
  @callback setopts(socket(), keyword()) :: :ok | {:error, term()}
  @callback close(socket()) :: :ok
  @callback normalize_message(term(), socket()) :: message()
end