| 123456789101112131415161718192021222324252627282930313233343536 | 
							- package loader
 
- import (
 
- 	"errors"
 
- 	"v2ray.com/core/common"
 
- )
 
- var (
 
- 	ErrUnknownConfigID = errors.New("Unknown config ID.")
 
- )
 
- type ConfigCreator func() interface{}
 
- type ConfigCreatorCache map[string]ConfigCreator
 
- func (this ConfigCreatorCache) RegisterCreator(id string, creator ConfigCreator) error {
 
- 	if _, found := this[id]; found {
 
- 		return common.ErrDuplicatedName
 
- 	}
 
- 	this[id] = creator
 
- 	return nil
 
- }
 
- func (this ConfigCreatorCache) CreateConfig(id string) (interface{}, error) {
 
- 	creator, found := this[id]
 
- 	if !found {
 
- 		return nil, ErrUnknownConfigID
 
- 	}
 
- 	return creator(), nil
 
- }
 
- type ConfigLoader interface {
 
- 	Load([]byte) (interface{}, string, error)
 
- 	LoadWithID([]byte, string) (interface{}, error)
 
- }
 
 
  |