1 Star 0 Fork 0

非空非零/jupiter

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
manager.go 1.42 KB
一键复制 编辑 原始数据 按行查看 历史
renzhentao 提交于 2021-06-21 15:02 +08:00 . 1
package manager
import (
"errors"
"net/url"
"gitee.com/nonull/eden/pkg/conf"
)
var (
//ErrConfigAddr not config
ErrConfigAddr = errors.New("no config... ")
// ErrInvalidDataSource defines an error that the scheme has been registered
ErrInvalidDataSource = errors.New("invalid data source, please make sure the scheme has been registered")
registry map[string]DataSourceCreatorFunc
//DefaultScheme ..
DefaultScheme string
)
// DataSourceCreatorFunc represents a dataSource creator function
type DataSourceCreatorFunc func() conf.DataSource
func init() {
registry = make(map[string]DataSourceCreatorFunc)
}
// Register registers a dataSource creator function to the registry
func Register(scheme string, creator DataSourceCreatorFunc) {
registry[scheme] = creator
}
// CreateDataSource creates a dataSource witch has been registered
// func CreateDataSource(scheme string) (conf.DataSource, error) {
// creatorFunc, exist := registry[scheme]
// if !exist {
// return nil, ErrInvalidDataSource
// }
// return creatorFunc(), nil
// }
//NewDataSource ..
func NewDataSource(configAddr string) (conf.DataSource, error) {
if configAddr == "" {
return nil, ErrConfigAddr
}
urlObj, err := url.Parse(configAddr)
if err == nil && len(urlObj.Scheme) > 1 {
DefaultScheme = urlObj.Scheme
}
creatorFunc, exist := registry[DefaultScheme]
if !exist {
return nil, ErrInvalidDataSource
}
return creatorFunc(), nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/nonull/eden.git
git@gitee.com:nonull/eden.git
nonull
eden
jupiter
v0.3.1

搜索帮助