func RegisterPlugin()

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
}