全局插件初始化封装

This commit is contained in:
huangmengzhu
2023-02-13 15:22:18 +08:00
parent af42e6ec1b
commit 54f7603301
5 changed files with 14 additions and 5 deletions

View File

@@ -27,6 +27,15 @@ type PluginManager struct {
plugins Plugins plugins Plugins
pluginObjs eosc.Untyped[string, *PluginObj] pluginObjs eosc.Untyped[string, *PluginObj]
workers eosc.IWorkers workers eosc.IWorkers
global eocontext.IChainPro
}
func (p *PluginManager) Global() eocontext.IChainPro {
if p.global == nil {
p.global = p.createChain("global", map[string]*plugin.Config{})
}
return p.global
} }
func (p *PluginManager) Check(cfg interface{}) (profession, name, driver, desc string, err error) { func (p *PluginManager) Check(cfg interface{}) (profession, name, driver, desc string, err error) {

View File

@@ -38,8 +38,7 @@ func init() {
bean.AddInitializingBeanFunc(func() { bean.AddInitializingBeanFunc(func() {
log.Debug("init router manager") log.Debug("init router manager")
chainProxy = pluginManager.CreateRequest("global", map[string]*plugin.Config{}) chainProxy = pluginManager.Global()
manager.SetGlobalFilters(&chainProxy) manager.SetGlobalFilters(&chainProxy)
}) })
} }

View File

@@ -40,7 +40,7 @@ func init() {
bean.Injection(&m) bean.Injection(&m)
bean.AddInitializingBeanFunc(func() { bean.AddInitializingBeanFunc(func() {
log.Debug("init grpc router manager") log.Debug("init grpc router manager")
chainProxy = pluginManager.CreateRequest("global", map[string]*plugin.Config{}) chainProxy = pluginManager.Global()
routerManager.SetGlobalFilters(&chainProxy) routerManager.SetGlobalFilters(&chainProxy)
}) })

View File

@@ -37,7 +37,7 @@ func init() {
bean.Injection(&m) bean.Injection(&m)
bean.AddInitializingBeanFunc(func() { bean.AddInitializingBeanFunc(func() {
log.Debug("init router manager") log.Debug("init router manager")
chainProxy = pluginManager.CreateRequest("global", map[string]*plugin.Config{}) chainProxy = pluginManager.Global()
routerManager.SetGlobalFilters(&chainProxy) routerManager.SetGlobalFilters(&chainProxy)
}) })

View File

@@ -5,7 +5,7 @@ import (
"reflect" "reflect"
) )
//Config 普通插件配置在router、service、upstream的插件格式 // Config 普通插件配置在router、service、upstream的插件格式
type Config struct { type Config struct {
Disable bool `json:"disable"` Disable bool `json:"disable"`
Config interface{} `json:"config"` Config interface{} `json:"config"`
@@ -13,6 +13,7 @@ type Config struct {
type IPluginManager interface { type IPluginManager interface {
CreateRequest(id string, conf map[string]*Config) eocontext.IChainPro CreateRequest(id string, conf map[string]*Config) eocontext.IChainPro
Global() eocontext.IChainPro
GetConfigType(name string) (reflect.Type, bool) GetConfigType(name string) (reflect.Type, bool)
} }