in internal/plugin/plugin.go [72:100]
func RegisterPlugin(name string, pc ParseConfFunc, sv RequestFilterFunc, rsv ResponseFilterFunc) error {
log.Infof("register plugin %s", name)
if name == "" {
return ErrMissingName
}
if pc == nil {
return ErrMissingParseConfMethod
}
if sv == nil {
return ErrMissingRequestFilterMethod
}
if rsv == nil {
return ErrMissingResponseFilterMethod
}
opt := &pluginOpts{
ParseConf: pc,
RequestFilter: sv,
ResponseFilter: rsv,
}
pluginRegistry.Lock()
defer pluginRegistry.Unlock()
if _, found := pluginRegistry.opts[name]; found {
return ErrPluginRegistered{name}
}
pluginRegistry.opts[name] = opt
return nil
}