版本封存
This commit is contained in:
74
cmii-uav-watchdog-center/config/config_loader.go
Normal file
74
cmii-uav-watchdog-center/config/config_loader.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"cmii-uav-watchdog-common/wdd_log"
|
||||
"encoding/json"
|
||||
"os"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var (
|
||||
config *Config
|
||||
configOnce sync.Once
|
||||
)
|
||||
|
||||
// LoadConfig 加载配置
|
||||
func LoadConfig(configPath string) (*Config, error) {
|
||||
configOnce.Do(func() {
|
||||
// 读取配置文件
|
||||
data, err := os.ReadFile(configPath)
|
||||
if err != nil {
|
||||
// 如果配置文件不存在,则创建默认配置
|
||||
if os.IsNotExist(err) {
|
||||
config = createDefaultConfig()
|
||||
// 保存默认配置
|
||||
saveConfig(configPath, config)
|
||||
return
|
||||
}
|
||||
wdd_log.Error("读取配置文件失败: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 解析配置
|
||||
var cfg Config
|
||||
if err := json.Unmarshal(data, &cfg); err != nil {
|
||||
wdd_log.Error("解析配置文件失败: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
config = &cfg
|
||||
})
|
||||
|
||||
return config, nil
|
||||
}
|
||||
|
||||
// GetConfig 获取配置
|
||||
func GetConfig() *Config {
|
||||
if config == nil {
|
||||
// 如果配置未初始化,则加载默认配置
|
||||
config = createDefaultConfig()
|
||||
}
|
||||
return config
|
||||
}
|
||||
|
||||
// 创建默认配置
|
||||
func createDefaultConfig() *Config {
|
||||
return &Config{
|
||||
Server: ServerConfig{
|
||||
Port: 8080,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// 保存配置
|
||||
func saveConfig(configPath string, cfg *Config) {
|
||||
data, err := json.MarshalIndent(cfg, "", " ")
|
||||
if err != nil {
|
||||
wdd_log.Error("序列化配置失败: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
if err := os.WriteFile(configPath, data, 0644); err != nil {
|
||||
wdd_log.Error("保存配置文件失败: %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user