lib/opq/options_handler.ex

defmodule OPQ.OptionsHandler do
  @moduledoc """
  Saves and loads options to pass around.
  """

  def save_opts(feeder, opts) do
    Agent.start_link(fn -> opts end, name: name(feeder))
  end

  def timeout(feeder), do: load_opts(feeder)[:timeout]

  def stop(feeder), do: Agent.stop(name(feeder))

  defp load_opts(feeder), do: Agent.get(name(feeder), & &1)
  defp name(feeder), do: :"opq-#{Kernel.inspect(feeder)}"
end