[feat] add support.GoPluginCore 方法

This commit is contained in:
what 2023-04-25 17:08:36 +08:00
parent 2c1a864de4
commit a1104e57d8

33
support/service.go Normal file
View File

@ -0,0 +1,33 @@
package support
import (
"plugin"
"git.fsdpf.net/go/contracts"
)
func GoPluginCore(core string, controllers map[string]contracts.Controller, listens map[string]contracts.ResListener) {
p, err := plugin.Open(core)
if err != nil {
panic(err)
}
if f, err := p.Lookup("RegControllers"); err != nil {
panic(err)
} else if fn, ok := f.(func(map[string]contracts.Controller) error); ok {
fn(controllers)
}
if f, err := p.Lookup("RegListens"); err != nil {
panic(err)
} else if fn, ok := f.(func(map[string]contracts.ResListener) error); ok {
fn(listens)
}
if f, err := p.Lookup("Run"); err != nil {
panic(err)
} else if fn, ok := f.(func()); ok {
fn()
}
}