You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.3 KiB
62 lines
1.3 KiB
package event
|
|
|
|
import (
|
|
"reflect"
|
|
|
|
"yunyan/lego/core"
|
|
"yunyan/lego/sys/log"
|
|
)
|
|
|
|
/*
|
|
系统描述:进程级别的事件系统
|
|
*/
|
|
type (
|
|
FunctionInfo struct {
|
|
Function reflect.Value
|
|
Goroutine bool
|
|
}
|
|
ISys interface {
|
|
Register(eId core.Event_Key, f interface{}) (err error)
|
|
RegisterGO(eId core.Event_Key, f interface{}) (err error)
|
|
RemoveEvent(eId core.Event_Key, f interface{}) (err error)
|
|
TriggerEvent(eId core.Event_Key, agr ...interface{})
|
|
}
|
|
)
|
|
|
|
var (
|
|
defsys ISys
|
|
)
|
|
|
|
func OnInit(config map[string]interface{}, option ...Option) (err error) {
|
|
defsys, err = newSys(newOptions(config, option...))
|
|
return
|
|
}
|
|
|
|
func NewSys(option ...Option) (sys ISys, err error) {
|
|
sys, err = newSys(newOptionsByOption(option...))
|
|
return
|
|
}
|
|
|
|
// 注册同步事件处理函数
|
|
func Register(eId core.Event_Key, f interface{}) (err error) {
|
|
return defsys.Register(eId, f)
|
|
}
|
|
|
|
// 注册异步事件处理函数
|
|
func RegisterGO(eId core.Event_Key, f interface{}) (err error) {
|
|
return defsys.Register(eId, f)
|
|
}
|
|
|
|
// 移除事件
|
|
func RemoveEvent(eId core.Event_Key, f interface{}) (err error) {
|
|
return defsys.RemoveEvent(eId, f)
|
|
}
|
|
|
|
// 触发事件
|
|
func TriggerEvent(eId core.Event_Key, agr ...interface{}) {
|
|
if defsys != nil {
|
|
defsys.TriggerEvent(eId, agr...)
|
|
} else {
|
|
log.Warnf("event no start")
|
|
}
|
|
}
|
|
|