| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | 
							- package loader
 
- import (
 
- 	"errors"
 
- )
 
- var (
 
- 	ErrConfigIDKeyNotFound = errors.New("Config ID key is not found.")
 
- 	ErrConfigIDExists      = errors.New("Config ID already exists.")
 
- 	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 ErrConfigIDExists
 
- 	}
 
- 	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
 
- }
 
 
  |