|  | @@ -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)
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 |