| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | package loaderimport (	"errors"	"v2ray.com/core/common")var (	ErrUnknownConfigID = errors.New("Unknown config ID."))type ConfigCreator func() interface{}type ConfigLoader interface {	RegisterCreator(string, ConfigCreator) error	CreateConfig(string) (interface{}, error)	Load([]byte) (interface{}, string, error)	LoadWithID([]byte, string) (interface{}, error)}type BaseConfigLoader struct {	creators map[string]ConfigCreator}func NewBaseConfigLoader() *BaseConfigLoader {	return &BaseConfigLoader{		creators: make(map[string]ConfigCreator),	}}func (this *BaseConfigLoader) RegisterCreator(id string, creator ConfigCreator) error {	if _, found := this.creators[id]; found {		return common.ErrDuplicatedName	}	this.creators[id] = creator	return nil}func (this *BaseConfigLoader) CreateConfig(id string) (interface{}, error) {	creator, found := this.creators[id]	if !found {		return nil, ErrUnknownConfigID	}	return creator(), nil}
 |