From 8683bf75fa5f720fe3494bf60949e17aa4a75725 Mon Sep 17 00:00:00 2001 From: DualFroz Date: Mon, 24 Aug 2026 15:50:00 +0200 Subject: [PATCH] feat(expiry): add ttl sweep process --- lib/excache/expiry.ex | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 lib/excache/expiry.ex diff --git a/lib/excache/expiry.ex b/lib/excache/expiry.ex new file mode 100644 index 0000000..214774c --- /dev/null +++ b/lib/excache/expiry.ex @@ -0,0 +1,23 @@ +defmodule Excache.Expiry do + @moduledoc false + + use GenServer + + def start_link(_arg), do: GenServer.start_link(__MODULE__, nil, name: __MODULE__) + + @impl true + def init(_arg) do + interval = Application.get_env(:excache, :sweep_interval, 1000) + schedule(interval) + {:ok, interval} + end + + @impl true + def handle_info(:sweep, interval) do + Excache.Store.sweep() |> Enum.each(&Excache.Notify.expired/1) + schedule(interval) + {:noreply, interval} + end + + defp schedule(interval), do: Process.send_after(self(), :sweep, interval) +end