goserver_sync/core/mongox/config.go

56 lines
772 B
Go

package mongox
import (
"fmt"
"github.com/fsnotify/fsnotify"
"mongo.games.com/goserver/core"
"mongo.games.com/goserver/core/viperx"
)
var config = Configuration{}
type Configuration struct {
Path string
}
func (c *Configuration) Name() string {
return "mongox"
}
func (c *Configuration) Init() error {
if c.Path == "" {
c.Path = "mongo.yaml"
}
vp := viperx.GetViper(c.Path)
f := func() {
cfg := &Config{}
if err := vp.Unmarshal(cfg); err != nil {
panic(fmt.Sprintf("mongox init error: %v", err))
}
Restart(cfg)
}
f()
vp.OnConfigChange(func(in fsnotify.Event) {
if in.Name != c.Path {
return
}
f()
})
return nil
}
func (c *Configuration) Close() error {
Close()
return nil
}
func init() {
core.RegistePackage(&config)
}