Fix: Event register guarantees registration before returning

This commit is contained in:
MaMe82 2018-10-26 23:56:02 +02:00
parent 2f08ed92f5
commit 484a948668

View File

@ -39,7 +39,6 @@ func (evm *EventManager) Start() {
log.Println("Event Manager: Starting event dispatcher")
go evm.register_unregister()
go evm.dispatch()
}
func (evm *EventManager) Stop() {
@ -71,10 +70,11 @@ func (em *EventManager) RegisterReceiver(filterEventType int64) *EventReceiver {
}
go func() {
em.registerReceiver <- er
er.isRegistered = true //asynchronous registering, as soon as possible
em.registerReceiver <- er
er.isRegistered = true
go func() {
<- er.Ctx.Done() //continue watching and assure unregister as soon as possible if canceled
em.UnregisterReceiver(er)