123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package manchong
- import (
- "github.com/go-sql-driver/mysql"
- "github.com/json-iterator/go"
- "io"
- "os"
- "sync"
- "time"
- )
- type Config struct {
- Addr string `json:"addr"`
- LogLeve string `json:"log_leve"`
- LogFile string `json:"log_file"`
- Users map[string]string `json:"users"`
- MySQL *mysql.Config `json:"mysql"`
- }
- var CFG = Config{
- Addr: ":8080",
- LogLeve: "info",
- LogFile: "",
- Users: nil,
- MySQL: mysql.NewConfig(),
- }
- var fnsL = &sync.Mutex{}
- var fns = make([]func(), 0, 10)
- func RegisterReloadConfigCall(fn func()) {
- fnsL.Lock()
- defer fnsL.Unlock()
- fns = append(fns, fn)
- fn()
- }
- func readCFG() {
- file, err := os.Open("config.json")
- if err != nil {
- panic(err)
- }
- bs, err := io.ReadAll(file)
- if err != nil {
- panic(err)
- }
- err = jsoniter.Unmarshal(bs, &CFG)
- CFG.MySQL.Loc = time.Local
- if err != nil {
- panic(err)
- }
- fnsL.Lock()
- defer fnsL.Unlock()
- for _, fn := range fns {
- fn()
- }
- }
- func init() {
- readCFG()
- }
|