forked from MTSR/mapserver
event bus
This commit is contained in:
parent
782758bfa7
commit
10b84dc8ee
38
server/eventbus/eventbus.go
Normal file
38
server/eventbus/eventbus.go
Normal file
@ -0,0 +1,38 @@
|
||||
package eventbus
|
||||
|
||||
import (
|
||||
"sync"
|
||||
)
|
||||
|
||||
type Listener interface {
|
||||
OnEvent(eventtype string, o interface{})
|
||||
}
|
||||
|
||||
type Eventbus struct {
|
||||
mutex *sync.RWMutex
|
||||
listeners []Listener
|
||||
}
|
||||
|
||||
func New() *Eventbus {
|
||||
eb := Eventbus{}
|
||||
eb.mutex = &sync.RWMutex{}
|
||||
eb.listeners = make([]Listener, 0)
|
||||
|
||||
return &eb
|
||||
}
|
||||
|
||||
func (this *Eventbus) Emit(eventtype string, o interface{}) {
|
||||
this.mutex.RLock()
|
||||
defer this.mutex.RUnlock()
|
||||
|
||||
for _, l := range this.listeners {
|
||||
l.OnEvent(eventtype, o)
|
||||
}
|
||||
}
|
||||
|
||||
func (this *Eventbus) AddListener(l Listener) {
|
||||
this.mutex.Lock()
|
||||
defer this.mutex.Unlock()
|
||||
|
||||
this.listeners = append(this.listeners, l)
|
||||
}
|
Loading…
Reference in New Issue
Block a user