add lock to emitwithcallback (due to merge conflicts), address comments
diff --git a/apid.go b/apid.go
index 4392b8f..6e49337 100644
--- a/apid.go
+++ b/apid.go
@@ -9,7 +9,7 @@
const (
SystemEventsSelector EventSelector = "system event"
ShutdownEventSelector EventSelector = "shutdown event"
- ShutdownTimeout int = 10
+ ShutdownTimeout time.Duration = time.Duration(10) * time.Second
)
var (
@@ -88,7 +88,7 @@
}
}
return errors.New("Emit() problem: wrong event delivered")
- case <-time.After(time.Duration(ShutdownTimeout) * time.Second):
+ case <-time.After(ShutdownTimeout):
return errors.New("Shutdown timeout")
}
}
diff --git a/events/event_manager.go b/events/event_manager.go
index b98089e..7d7c69f 100644
--- a/events/event_manager.go
+++ b/events/event_manager.go
@@ -39,7 +39,12 @@
}
em.Listen(apid.EventDeliveredSelector, handler)
- if !em.dispatchers[selector].Send(event) {
+
+ em.Lock()
+ dispatch := em.dispatchers[selector]
+ em.Unlock()
+
+ if !dispatch.Send(event) {
em.sendDelivered(selector, event, 0) // in case of no dispatcher
}
}
diff --git a/events/events_test.go b/events/events_test.go
index e1099c1..8c338b6 100644
--- a/events/events_test.go
+++ b/events/events_test.go
@@ -9,7 +9,6 @@
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
- "sync/atomic"
"fmt"
"strconv"
)