From 26b70760a70c4a00b8c005acbead31a3b4e2349b Mon Sep 17 00:00:00 2001 From: Werner Dweight Date: Fri, 13 Oct 2023 18:48:59 +0200 Subject: [PATCH] fix: avoid collision of subscriber priorities --- main.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/main.go b/main.go index eba344e..4d4df3a 100644 --- a/main.go +++ b/main.go @@ -37,6 +37,13 @@ func (h *EventHub) Subscribe(subscriber EventSubscriber[Event[EventPayload]]) { h.subscribers[subscriber.GetKey()][subscriber.GetPriority()] = make([]EventSubscriber[Event[EventPayload]], 0) } h.subscribers[subscriber.GetKey()][subscriber.GetPriority()] = append(h.subscribers[subscriber.GetKey()][subscriber.GetPriority()], subscriber) + // only add priority if not yet present to avoid duplicates + for _, priority := range h.priorities { + if priority == subscriber.GetPriority() { + h.lock.Unlock() + return + } + } h.priorities = append(h.priorities, subscriber.GetPriority()) sort.Ints(h.priorities) h.lock.Unlock()