Files
Volcano-Engine-TTS-UI/adapter/provider/registry.go
T

34 lines
947 B
Go
Raw Normal View History

package provider
import "sort"
// registry 保存所有已注册的上游适配器。
// 适配器在自己的 init() 里调用 Register;主干只通过 Get/Names 访问。
var registry = map[string]Provider{}
// Register 注册一个上游适配器。通常在适配器包的 init() 里调用。
// 重名注册会 panic —— 说明有重名 bug,应立即暴露。
func Register(p Provider) {
name := p.Name()
if _, ok := registry[name]; ok {
panic("provider: duplicate registration: " + name)
}
registry[name] = p
}
// Get 按名字取已注册的上游适配器;不存在返回 false。
func Get(name string) (Provider, bool) {
p, ok := registry[name]
return p, ok
}
// Names 返回所有已注册适配器的名字(排序稳定),供 admin UI 下拉框使用。
func Names() []string {
names := make([]string, 0, len(registry))
for name := range registry {
names = append(names, name)
}
sort.Strings(names)
return names
}