From a8d8d138cb8602f4fd42a01a79ee95b1fc658cee Mon Sep 17 00:00:00 2001 From: Oleks Date: Fri, 15 May 2026 21:45:19 +0300 Subject: [PATCH] feat(eventsource): add ConnectedUIDs accessor Expose a snapshot of currently registered uids so fan-out broadcasters can pre-filter recipients before calling SendMessage. --- modules/eventsource/manager.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/modules/eventsource/manager.go b/modules/eventsource/manager.go index 7ed2a82903..3a347a4f7b 100644 --- a/modules/eventsource/manager.go +++ b/modules/eventsource/manager.go @@ -68,6 +68,19 @@ func (m *Manager) UnregisterAll() { m.messengers = map[int64]*Messenger{} } +// ConnectedUIDs returns a snapshot of all currently registered user IDs. +// Useful for fan-out broadcasters that need to filter recipients before +// calling SendMessage. +func (m *Manager) ConnectedUIDs() []int64 { + m.mutex.Lock() + defer m.mutex.Unlock() + uids := make([]int64, 0, len(m.messengers)) + for uid := range m.messengers { + uids = append(uids, uid) + } + return uids +} + // SendMessage sends a message to a particular user func (m *Manager) SendMessage(uid int64, message *Event) { m.mutex.Lock()