From bac1011429f1a4220728121fbb9d9d63d159e4e1 Mon Sep 17 00:00:00 2001 From: DualFroz Date: Wed, 26 Aug 2026 22:40:00 +0200 Subject: [PATCH] feat(pubsub): add channel registry pub/sub --- lib/excache/pubsub.ex | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 lib/excache/pubsub.ex diff --git a/lib/excache/pubsub.ex b/lib/excache/pubsub.ex new file mode 100644 index 0000000..2a2fe0d --- /dev/null +++ b/lib/excache/pubsub.ex @@ -0,0 +1,14 @@ +defmodule Excache.PubSub do + @moduledoc false + + @registry Excache.PubSub.Registry + + def subscribe(channel), do: Registry.register(@registry, channel, nil) + def unsubscribe(channel), do: Registry.unregister(@registry, channel) + + def publish(channel, payload) do + subscribers = Registry.lookup(@registry, channel) + Enum.each(subscribers, fn {pid, _} -> send(pid, {:pubsub, channel, payload}) end) + length(subscribers) + end +end