package events
import (
"sync"
)
var Event map[string]func(ps []string)
func init() {
Event = make(map[string]func(ps []string))
}
// Subscribe to event
func Add(name string, callback func(ps []string)) {
rw := &sync.RWMutex{}
rw.Lock()
defer rw.Unlock()
Event[name] = callback
}
// Call event
func Call(name string ps []string) {
rw := &sync.RWMutex{}
rw.RLock()
defer rw.RUnlock()
go Event[name](ps)
}
package events
import (
"sync"
)
var events *Events
type Events struct {
sync.RWMutex
list map[string]func(ps []string)
}
NewEventsList func() (list *Events) {
list = new(Events)
list.list = make(map[string]func(ps []string))
return list
}
func init() {
events = NewEventsList()
}
func Add(name string, callback func(ps []string)) {
events.Add(name, callback)
}
func Call(name string ps []string) bool {
return events.Call(name, ps)
}
// Subscribe to event
func (l *Events) Add(name string, callback func(ps []string)) {
l.Lock()
defer l.Unlock()
l.list[name] = callback
}
// Call event
func (l *Events) Call(name string ps []string) bool {
l.RLock()
defer l.RUnlock()
if f, ok := l.list[name]; ok {
go f(ps)
return true
}
return false
}
Find more questions by tags GoWeb Development
- Reta76 commented on July 9th 19 at 14:04
Right? - Reta76 commented on July 9th 19 at 14:16