|  | @@ -1,36 +0,0 @@
 | 
	
		
			
				|  |  | -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)
 | 
	
		
			
				|  |  | -}
 |