lib/instream/writer.ex

defmodule Instream.Writer do
  @moduledoc """
  Point writer behaviour.
  """

  alias Instream.Encoder.Line
  alias Instream.HTTPClient

  @optional_callbacks [
    writer_workers: 1
  ]

  @doc """
  Writes a point.
  """
  @callback write(payload :: [Line.point()], opts :: Keyword.t(), conn :: module) ::
              HTTPClient.response()

  @doc """
  Optional list of workers to be supervised by the connection.
  """
  @callback writer_workers(conn :: module) :: [:supervisor.child_spec() | {module, term} | module]
end