templater

This commit is contained in:
黄孟柱
2022-08-09 14:41:26 +08:00
parent 3a981a1bbe
commit 81dfe0cef1
62 changed files with 272 additions and 355 deletions

View File

@@ -31,7 +31,7 @@ func (a *aksk) Start() error {
return nil return nil
} }
func (a *aksk) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (a *aksk) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
c, ok := conf.(*Config) c, ok := conf.(*Config)
if !ok { if !ok {
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf)) return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))

View File

@@ -26,7 +26,7 @@ func (d *driver) ConfigType() reflect.Type {
} }
//Create 创建aksk鉴权驱动实例 //Create 创建aksk鉴权驱动实例
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
a := &aksk{ a := &aksk{
id: id, id: id,
} }

View File

@@ -150,7 +150,7 @@ func (a *apikey) Start() error {
} }
//Reset 重新加载配置 //Reset 重新加载配置
func (a *apikey) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (a *apikey) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
cfg, ok := conf.(*Config) cfg, ok := conf.(*Config)
if !ok { if !ok {
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf)) return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))

View File

@@ -24,7 +24,7 @@ func (d *driver) ConfigType() reflect.Type {
return d.configType return d.configType
} }
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
w := &apikey{ w := &apikey{
id: id, id: id,
} }

View File

@@ -58,7 +58,7 @@ func (b *basic) Start() error {
return nil return nil
} }
func (b *basic) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (b *basic) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
cfg, ok := conf.(*Config) cfg, ok := conf.(*Config)
if !ok { if !ok {
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf)) return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))

View File

@@ -26,7 +26,7 @@ func (d *driver) ConfigType() reflect.Type {
} }
//Create 创建http_proxy驱动的实例 //Create 创建http_proxy驱动的实例
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
w := &basic{ w := &basic{
id: id, id: id,
} }

View File

@@ -26,7 +26,7 @@ func (d *driver) ConfigType() reflect.Type {
} }
//Create 创建jwt鉴权驱动实例 //Create 创建jwt鉴权驱动实例
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
a := &jwt{ a := &jwt{
id: id, id: id,
} }

View File

@@ -33,7 +33,7 @@ func (j *jwt) Start() error {
return nil return nil
} }
func (j *jwt) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (j *jwt) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
c, ok := conf.(*Config) c, ok := conf.(*Config)
if !ok { if !ok {
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf)) return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))

View File

@@ -65,7 +65,7 @@ func (c *consul) Start() error {
} }
//Reset 重置consul实例配置 //Reset 重置consul实例配置
func (c *consul) Reset(cfg interface{}, workers map[eosc.RequireId]interface{}) error { func (c *consul) Reset(cfg interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
workerConfig, ok := cfg.(*Config) workerConfig, ok := cfg.(*Config)
if !ok { if !ok {
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(cfg)) return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(cfg))

View File

@@ -31,7 +31,7 @@ func (d *driver) ConfigType() reflect.Type {
} }
//Create 创建consul驱动实例 //Create 创建consul驱动实例
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
workerConfig, ok := v.(*Config) workerConfig, ok := v.(*Config)
if !ok { if !ok {
return nil, fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(v)) return nil, fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(v))

View File

@@ -30,7 +30,7 @@ func (d *driver) ConfigType() reflect.Type {
} }
//Create 创建eureka驱动实例 //Create 创建eureka驱动实例
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
cfg, ok := v.(*Config) cfg, ok := v.(*Config)
if !ok { if !ok {
return nil, fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(v)) return nil, fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(v))

View File

@@ -105,7 +105,7 @@ func (e *eureka) Start() error {
} }
//Reset 重置eureka实例配置 //Reset 重置eureka实例配置
func (e *eureka) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (e *eureka) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
cfg, ok := conf.(*Config) cfg, ok := conf.(*Config)
if !ok { if !ok {
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf)) return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))

View File

@@ -31,7 +31,7 @@ func (d *driver) ConfigType() reflect.Type {
} }
//Create 创建nacos驱动实例 //Create 创建nacos驱动实例
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
cfg, ok := v.(*Config) cfg, ok := v.(*Config)
if !ok { if !ok {
val := reflect.ValueOf(v) val := reflect.ValueOf(v)

View File

@@ -89,7 +89,7 @@ func (n *nacos) Start() error {
} }
//Reset 重置nacos实例配置 //Reset 重置nacos实例配置
func (n *nacos) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (n *nacos) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
cfg, ok := conf.(*Config) cfg, ok := conf.(*Config)
if !ok { if !ok {
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf)) return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))

View File

@@ -27,7 +27,7 @@ func (d *driver) ConfigType() reflect.Type {
} }
//Create 创建静态服务发现驱动的实例 //Create 创建静态服务发现驱动的实例
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
s := &static{ s := &static{
id: id, id: id,
} }

View File

@@ -78,7 +78,7 @@ func (s *static) reset(cfg *Config) error {
} }
//Reset 重置静态服务发现实例配置 //Reset 重置静态服务发现实例配置
func (s *static) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (s *static) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
cfg, ok := conf.(*Config) cfg, ok := conf.(*Config)
if !ok { if !ok {
return fmt.Errorf("need %s,now %s:%w", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf), errorStructType) return fmt.Errorf("need %s,now %s:%w", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf), errorStructType)

View File

@@ -48,7 +48,7 @@ func (d *Driver) Check(v interface{}) (*Config, error) {
return conf, nil return conf, nil
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
worker := &FileOutput{ worker := &FileOutput{
Driver: d, Driver: d,
id: id, id: id,

View File

@@ -38,7 +38,7 @@ func (a *FileOutput) Start() error {
return nil return nil
} }
func (a *FileOutput) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) (err error) { func (a *FileOutput) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) (err error) {
cfg, err := a.Driver.Check(conf) cfg, err := a.Driver.Check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -53,7 +53,7 @@ func (d *Driver) Check(v interface{}) (*Config, error) {
return httpConf, nil return httpConf, nil
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
worker := &HttpOutput{ worker := &HttpOutput{
Driver: d, Driver: d,
id: id, id: id,

View File

@@ -36,7 +36,7 @@ func (h *HttpOutput) Start() error {
return nil return nil
} }
func (h *HttpOutput) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) (err error) { func (h *HttpOutput) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) (err error) {
config, err := h.Driver.Check(conf) config, err := h.Driver.Check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -27,7 +27,7 @@ func (d *Driver) check(v interface{}) (*ProducerConfig, error) {
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
worker := &Output{ worker := &Output{
Driver: d, Driver: d,
id: id, id: id,

View File

@@ -52,7 +52,7 @@ func (o *Output) Start() error {
return nil return nil
} }
func (o *Output) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (o *Output) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
cfg, err := o.Driver.check(conf) cfg, err := o.Driver.check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -47,7 +47,7 @@ func (d *Driver) Check(v interface{}) (*Config, error) {
return nsqConf, nil return nsqConf, nil
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
worker := &NsqOutput{ worker := &NsqOutput{
Driver: d, Driver: d,
id: id, id: id,

View File

@@ -25,7 +25,7 @@ func (n *NsqOutput) Start() error {
return nil return nil
} }
func (n *NsqOutput) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (n *NsqOutput) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
config, err := n.Driver.Check(conf) config, err := n.Driver.Check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -27,7 +27,7 @@ func (d *Driver) check(v interface{}) (*Config, error) {
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
cfg, err := d.check(v) cfg, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -61,7 +61,7 @@ func (s *SysWriter) Start() error {
return nil return nil
} }
func (s *SysWriter) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (s *SysWriter) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
cfg, err := s.Driver.check(conf) cfg, err := s.Driver.check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -32,7 +32,7 @@ func (s *SysWriter) Start() error {
return fmt.Errorf("can not create syslog transporterReset in windows system") return fmt.Errorf("can not create syslog transporterReset in windows system")
} }
func (s *SysWriter) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (s *SysWriter) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
return fmt.Errorf("can not create syslog transporterReset in windows system") return fmt.Errorf("can not create syslog transporterReset in windows system")
} }

View File

@@ -18,7 +18,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
if err != nil { if err != nil {
return err return err
@@ -57,7 +57,7 @@ func (d *Driver) getList(auths []eosc.RequireId) ([]output.IEntryOutput, error)
return ls, nil return ls, nil
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -50,7 +50,7 @@ func (l *accessLog) Start() error {
return nil return nil
} }
func (l *accessLog) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (l *accessLog) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
c, err := l.check(conf) c, err := l.check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -69,7 +69,7 @@ func (a *Auth) Start() error {
return nil return nil
} }
func (a *Auth) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (a *Auth) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
confObj, err := a.check(conf) confObj, err := a.check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -17,7 +17,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
if err != nil { if err != nil {
return err return err
@@ -50,7 +50,7 @@ func (d *Driver) getList(auths []eosc.RequireId) ([]auth.IAuth, error) {
} }
return ls, nil return ls, nil
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -33,7 +33,7 @@ func (c *CircuitBreaker) Start() error {
return nil return nil
} }
func (c *CircuitBreaker) Reset(v interface{}, workers map[eosc.RequireId]interface{}) error { func (c *CircuitBreaker) Reset(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
conf, err := c.check(v) conf, err := c.check(v)
if err != nil { if err != nil {
return err return err

View File

@@ -13,7 +13,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
if err != nil { if err != nil {
return err return err
@@ -39,7 +39,7 @@ func (d *Driver) ConfigType() reflect.Type {
return d.configType return d.configType
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -124,7 +124,7 @@ func (c *CorsFilter) Start() error {
return nil return nil
} }
func (c *CorsFilter) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (c *CorsFilter) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
cfg, err := c.check(conf) cfg, err := c.check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -13,7 +13,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
return err return err
} }
@@ -34,7 +34,7 @@ func (d *Driver) ConfigType() reflect.Type {
return d.configType return d.configType
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -14,7 +14,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
if err != nil { if err != nil {
return err return err
@@ -39,7 +39,7 @@ func (d *Driver) ConfigType() reflect.Type {
return d.configType return d.configType
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -114,7 +114,7 @@ func (e *ExtraParams) Start() error {
return nil return nil
} }
func (e *ExtraParams) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (e *ExtraParams) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
confObj, err := e.check(conf) confObj, err := e.check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -13,7 +13,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
return err return err
} }
@@ -34,7 +34,7 @@ func (d *Driver) ConfigType() reflect.Type {
return d.configType return d.configType
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -95,7 +95,7 @@ func (g *Gzip) Start() error {
return nil return nil
} }
func (g *Gzip) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (g *Gzip) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
cfg, err := g.check(conf) cfg, err := g.check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -13,7 +13,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
if err != nil { if err != nil {
return err return err
@@ -36,7 +36,7 @@ func (d *Driver) ConfigType() reflect.Type {
return d.configType return d.configType
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -40,7 +40,7 @@ func (I *IPHandler) Start() error {
return nil return nil
} }
func (I *IPHandler) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (I *IPHandler) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
confObj, err := I.check(conf) confObj, err := I.check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -14,7 +14,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
if err != nil { if err != nil {
return err return err
@@ -40,7 +40,7 @@ func (d *Driver) ConfigType() reflect.Type {
return d.configType return d.configType
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (interface{}, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -193,7 +193,7 @@ func (p *ParamsTransformer) Start() error {
return nil return nil
} }
func (p *ParamsTransformer) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (p *ParamsTransformer) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
confObj, err := p.check(conf) confObj, err := p.check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -15,7 +15,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
if err != nil { if err != nil {
return err return err
@@ -41,7 +41,7 @@ func (d *Driver) ConfigType() reflect.Type {
return d.configType return d.configType
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -1,7 +1,6 @@
package proxy_rewrite package proxy_rewrite
import ( import (
"fmt"
"github.com/eolinker/eosc/eocontext" "github.com/eolinker/eosc/eocontext"
"regexp" "regexp"
@@ -73,7 +72,7 @@ func (p *ProxyRewrite) Start() error {
return nil return nil
} }
func (p *ProxyRewrite) Reset(v interface{}, workers map[eosc.RequireId]interface{}) error { func (p *ProxyRewrite) Reset(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
conf, err := p.check(v) conf, err := p.check(v)
if err != nil { if err != nil {
return err return err

View File

@@ -15,7 +15,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
if err != nil { if err != nil {
return err return err
@@ -41,7 +41,7 @@ func (d *Driver) ConfigType() reflect.Type {
return d.configType return d.configType
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -110,7 +110,7 @@ func (p *ProxyRewrite) Start() error {
return nil return nil
} }
func (p *ProxyRewrite) Reset(v interface{}, workers map[eosc.RequireId]interface{}) error { func (p *ProxyRewrite) Reset(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
conf, err := p.check(v) conf, err := p.check(v)
if err != nil { if err != nil {
return err return err

View File

@@ -13,7 +13,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
if err != nil { if err != nil {
return err return err
@@ -32,7 +32,7 @@ func (d *Driver) check(v interface{}) (*Config, error) {
return conf, nil return conf, nil
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -101,7 +101,7 @@ func (r *RateLimiting) Start() error {
return nil return nil
} }
func (r *RateLimiting) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (r *RateLimiting) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
confObj, err := r.check(conf) confObj, err := r.check(conf)
if err != nil { if err != nil {
return err return err

View File

@@ -14,7 +14,7 @@ type Driver struct {
configType reflect.Type configType reflect.Type
} }
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error { func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
_, err := d.check(v) _, err := d.check(v)
if err != nil { if err != nil {
return err return err
@@ -40,7 +40,7 @@ func (d *Driver) ConfigType() reflect.Type {
return d.configType return d.configType
} }
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, err := d.check(v) conf, err := d.check(v)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -4,7 +4,6 @@ import (
"github.com/eolinker/eosc/eocontext" "github.com/eolinker/eosc/eocontext"
"strconv" "strconv"
"github.com/eolinker/apinto/utils"
"github.com/eolinker/eosc" "github.com/eolinker/eosc"
http_service "github.com/eolinker/eosc/eocontext/http-context" http_service "github.com/eolinker/eosc/eocontext/http-context"
) )
@@ -33,7 +32,7 @@ func (r *ResponseRewrite) Start() error {
return nil return nil
} }
func (r *ResponseRewrite) Reset(v interface{}, workers map[eosc.RequireId]interface{}) error { func (r *ResponseRewrite) Reset(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
conf, err := r.check(v) conf, err := r.check(v)
if err != nil { if err != nil {
return err return err

View File

@@ -30,7 +30,7 @@ func NewHTTPRouter() *HTTPRouterDriver {
} }
//Create 创建一个http路由驱动实例 //Create 创建一个http路由驱动实例
func (h *HTTPRouterDriver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (h *HTTPRouterDriver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
conf, iService, err := h.check(v, workers) conf, iService, err := h.check(v, workers)
if err != nil { if err != nil {
@@ -44,7 +44,7 @@ func (h *HTTPRouterDriver) Create(id, name string, v interface{}, workers map[eo
} }
//check 检查http路由驱动配置 //check 检查http路由驱动配置
func (h *HTTPRouterDriver) check(v interface{}, workers map[eosc.RequireId]interface{}) (*DriverConfig, service.IServiceCreate, error) { func (h *HTTPRouterDriver) check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) (*DriverConfig, service.IServiceCreate, error) {
conf, ok := v.(*DriverConfig) conf, ok := v.(*DriverConfig)
if !ok { if !ok {
return nil, nil, fmt.Errorf("get %s but %s %w", config.TypeNameOf(v), config.TypeNameOf(new(DriverConfig)), eosc.ErrorRequire) return nil, nil, fmt.Errorf("get %s but %s %w", config.TypeNameOf(v), config.TypeNameOf(new(DriverConfig)), eosc.ErrorRequire)

View File

@@ -30,7 +30,7 @@ func (r *Router) create(cf *DriverConfig, target service.IServiceCreate) (*Route
handler := NewRouterHandler(newConf, serviceHandler) handler := NewRouterHandler(newConf, serviceHandler)
return handler, nil return handler, nil
} }
func (r *Router) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (r *Router) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
cf, ser, err := r.driver.check(conf, workers) cf, ser, err := r.driver.check(conf, workers)
if err != nil { if err != nil {
return err return err

View File

@@ -21,7 +21,7 @@ func (d *driver) ConfigType() reflect.Type {
} }
//Create 创建service_http驱动的实例 //Create 创建service_http驱动的实例
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
w := &serviceWorker{ w := &serviceWorker{
id: id, id: id,

View File

@@ -36,7 +36,7 @@ func (s *serviceWorker) Start() error {
} }
//Reset 重置服务实例的配置 //Reset 重置服务实例的配置
func (s *serviceWorker) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (s *serviceWorker) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
data, ok := conf.(*Config) data, ok := conf.(*Config)
if !ok { if !ok {
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf)) return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))

View File

@@ -8,15 +8,7 @@ type IChainReset interface {
Reset(filters ...eocontext.IFilter) Reset(filters ...eocontext.IFilter)
} }
type IChain interface {
eocontext.IChain
ToFilter() eocontext.IFilter
Append(filters ...eocontext.IFilter) IChain
Insert(filters ...eocontext.IFilter) IChain
}
type IChainHandler interface { type IChainHandler interface {
IChain
IChainReset IChainReset
} }

View File

@@ -2,85 +2,34 @@ package filter
import ( import (
"github.com/eolinker/eosc/eocontext" "github.com/eolinker/eosc/eocontext"
"github.com/eolinker/eosc/log"
"github.com/eolinker/eosc/utils/config"
) )
var _ IChainHandler = (*_ChainHandler)(nil) var _ IChainHandler = (*_ChainHandler)(nil)
type _ChainHandler struct { type _ChainHandler struct {
orgFilter *_ChainFilter filters eocontext.Filters
resetHandler IChainReset
} }
func (c *_ChainHandler) Destroy() { func (c *_ChainHandler) Destroy() {
orgFilter := c.orgFilter c.filters.Destroy()
if orgFilter != nil {
c.orgFilter = nil
orgFilter.Destroy()
}
} }
func createHandler(filters []eocontext.IFilter) *_ChainHandler { func createHandler(filters []eocontext.IFilter) *_ChainHandler {
orgFilter := ToFilter(filters)
return &_ChainHandler{ return &_ChainHandler{
orgFilter: orgFilter, filters: filters,
resetHandler: orgFilter,
} }
} }
func (c *_ChainHandler) ToFilter() eocontext.IFilter {
return c.orgFilter
}
func (c *_ChainHandler) DoChain(ctx eocontext.EoContext) error { func (c *_ChainHandler) DoChain(ctx eocontext.EoContext) error {
log.Debug("do chain handler: ", c, config.TypeNameOf(c.orgFilter))
orgFilter := c.orgFilter
if orgFilter != nil {
return orgFilter.DoFilter(ctx, nil)
}
return nil
}
func (c *_ChainHandler) Append(filters ...eocontext.IFilter) IChain { orgFilter := c.filters
pre := c.ToFilter()
fs := make([]eocontext.IFilter, 0, len(filters)+1)
if pre != nil {
fs = append(fs, pre)
}
fs = append(fs, filters...)
n := createHandler(fs)
n.resetHandler = c.resetHandler
return n
}
func (c *_ChainHandler) Insert(filters ...eocontext.IFilter) IChain { return orgFilter.DoChain(ctx)
pre := c.ToFilter()
fs := make([]eocontext.IFilter, 0, len(filters)+1)
fs = append(fs, filters...)
if pre != nil {
fs = append(fs, pre)
}
n := createHandler(fs)
n.resetHandler = c.resetHandler
return n
} }
func (c *_ChainHandler) Reset(filters ...eocontext.IFilter) { func (c *_ChainHandler) Reset(filters ...eocontext.IFilter) {
c.filters = filters
if c.resetHandler != nil {
c.resetHandler.Reset(filters...)
return
}
filter := c.orgFilter
if filter != nil {
filter.Reset(filters...)
} else {
c.orgFilter = ToFilter(filters)
}
return
} }

View File

@@ -52,7 +52,7 @@ func (f *finishHttp) Finish(ctx eoscContext.EoContext) error {
if !ok { if !ok {
return nil return nil
} }
target.finish() target.FastFinish()
return nil return nil
} }
@@ -155,7 +155,7 @@ func (ctx *Context) RequestId() string {
} }
//Finish finish //Finish finish
func (ctx *Context) finish() { func (ctx *Context) FastFinish() {
if ctx.response.responseError != nil { if ctx.response.responseError != nil {
ctx.fastHttpRequestCtx.SetStatusCode(504) ctx.fastHttpRequestCtx.SetStatusCode(504)
ctx.fastHttpRequestCtx.SetBodyString(ctx.response.responseError.Error()) ctx.fastHttpRequestCtx.SetBodyString(ctx.response.responseError.Error())

View File

@@ -40,7 +40,7 @@ func (p *PluginManager) ConfigType() reflect.Type {
return reflect.TypeOf(new(PluginWorkerConfig)) return reflect.TypeOf(new(PluginWorkerConfig))
} }
func (p *PluginManager) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) { func (p *PluginManager) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
p.Reset(v, workers) p.Reset(v, workers)
return p, nil return p, nil
} }

View File

@@ -4,18 +4,12 @@ import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"github.com/eolinker/eosc/eocontext"
"reflect"
"github.com/eolinker/apinto/plugin" "github.com/eolinker/apinto/plugin"
"github.com/eolinker/eosc/common/bean"
"github.com/eolinker/eosc" "github.com/eolinker/eosc"
"github.com/eolinker/eosc/common/bean"
"github.com/eolinker/apinto/filter" "github.com/eolinker/eosc/eocontext"
"github.com/eolinker/eosc/log" "github.com/eolinker/eosc/log"
"reflect"
) )
var ( var (
@@ -35,7 +29,7 @@ type PluginManager struct {
workers eosc.IWorkers workers eosc.IWorkers
} }
func (p *PluginManager) CreateRequest(id string, conf map[string]*plugin.Config) plugin.IPlugin { func (p *PluginManager) CreateRequest(id string, conf map[string]*plugin.Config) eocontext.IChain {
return p.createChain(id, conf) return p.createChain(id, conf)
} }
@@ -47,7 +41,7 @@ func (p *PluginManager) Start() error {
return nil return nil
} }
func (p *PluginManager) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error { func (p *PluginManager) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
plugins, err := p.check(conf) plugins, err := p.check(conf)
if err != nil { if err != nil {
@@ -62,7 +56,7 @@ func (p *PluginManager) Reset(conf interface{}, workers map[eosc.RequireId]inter
if !ok { if !ok {
continue continue
} }
v.IChainHandler.Reset(p.createFilters(v.conf)...) v.Filters = p.createFilters(v.conf)
} }
return nil return nil
@@ -80,23 +74,19 @@ func (p *PluginManager) createFilters(conf map[string]*plugin.Config) []eocontex
filters := make([]eocontext.IFilter, 0, len(conf)) filters := make([]eocontext.IFilter, 0, len(conf))
plugins := p.plugins plugins := p.plugins
for _, plg := range plugins { for _, plg := range plugins {
if plg.Status == StatusDisable || plg.Status == "" { if plg.Status == StatusDisable {
// 当插件类型不匹配,跳过 // 禁用插件,跳过
continue continue
} }
c := plg.Config c := plg.Config
if v, ok := conf[plg.Name]; ok { if v, ok := conf[plg.Name]; ok {
if v.Disable { if v.Disable {
// 不启用该插件 // 局部禁用
continue
}
if plg.Status != StatusGlobal && plg.Status != StatusEnable {
continue
}
if v.Config == nil && plg.Status != StatusGlobal {
continue continue
} }
if v.Config != nil {
c = v.Config c = v.Config
}
} else if plg.Status != StatusGlobal { } else if plg.Status != StatusGlobal {
continue continue
} }
@@ -120,15 +110,15 @@ func (p *PluginManager) createFilters(conf map[string]*plugin.Config) []eocontex
return filters return filters
} }
func (p *PluginManager) createChain(id string, conf map[string]*plugin.Config) plugin.IPlugin { func (p *PluginManager) createChain(id string, conf map[string]*plugin.Config) *PluginObj {
chain := filter.NewChain(p.createFilters(conf)) chain := p.createFilters(conf)
obj, has := p.pluginObjs.Get(id)
obj, has := p.pluginObjs.Del(id) if !has {
if has { obj = NewPluginObj(chain, id, conf)
o := obj.(*PluginObj) p.pluginObjs.Set(id, obj)
o.Destroy() } else {
obj.(*PluginObj).Filters = chain
} }
obj = NewPluginObj(chain, id, conf, p.pluginObjs)
return obj.(*PluginObj) return obj.(*PluginObj)
} }

View File

@@ -1,33 +1,25 @@
package plugin_manager package plugin_manager
import ( import (
"github.com/eolinker/apinto/filter"
"github.com/eolinker/apinto/plugin" "github.com/eolinker/apinto/plugin"
"github.com/eolinker/eosc" eoscContext "github.com/eolinker/eosc/eocontext"
) )
type PluginObj struct { type PluginObj struct {
filter.IChainHandler eoscContext.Filters
id string id string
conf map[string]*plugin.Config conf map[string]*plugin.Config
manager eosc.IUntyped
} }
func NewPluginObj(handler filter.IChainHandler, id string, conf map[string]*plugin.Config, manager eosc.IUntyped) *PluginObj { func NewPluginObj(filters eoscContext.Filters, id string, conf map[string]*plugin.Config) *PluginObj {
obj := &PluginObj{IChainHandler: handler, id: id, conf: conf, manager: manager} obj := &PluginObj{Filters: filters, id: id, conf: conf}
manager.Set(id, obj)
return obj return obj
} }
func (p *PluginObj) Destroy() { func (p *PluginObj) Destroy() {
manager := p.manager
if manager != nil { handler := p.Filters
p.manager = nil
manager.Del(p.id)
}
handler := p.IChainHandler
if handler != nil { if handler != nil {
handler.Destroy() handler.Destroy()
} }

View File

@@ -1,6 +1,6 @@
package plugin package plugin
import "github.com/eolinker/apinto/filter" import "github.com/eolinker/eosc/eocontext"
//Config 普通插件配置在router、service、upstream的插件格式 //Config 普通插件配置在router、service、upstream的插件格式
type Config struct { type Config struct {
@@ -12,12 +12,8 @@ type IPluginConfigMerge interface {
Merge(high map[string]*Config) map[string]*Config Merge(high map[string]*Config) map[string]*Config
} }
type IPlugin interface {
filter.IChain
Destroy()
}
type IPluginManager interface { type IPluginManager interface {
CreateRequest(id string, conf map[string]*Config) IPlugin CreateRequest(id string, conf map[string]*Config) eocontext.IChain
//CreateUpstream(id string, conf map[string]*Config) IPlugin //CreateUpstream(id string, conf map[string]*Config) IPlugin
} }