defmodule Consul.IndexStore do
@moduledoc """
This module keeps track of index values for consul blocking queries.
"""
use GenServer
def start_link(_) do
GenServer.start_link(__MODULE__, [], name: __MODULE__)
end
def get_index(url) do
case :ets.lookup(__MODULE__, url) do
[{_, value}] -> value
_ -> nil
end
end
def store_index(url, value) do
:ets.insert(__MODULE__, {url, value})
end
def reset_index(url) do
:ets.delete(__MODULE__, url)
end
@impl GenServer
def init(_) do
__MODULE__ = :ets.new(__MODULE__, [:named_table, :public])
{:ok, nil}
end
end