package init

import (
	"cicv-data-closedloop/kinglong/common/cfg"
	"cicv-data-closedloop/kinglong/common/log"
	"cicv-data-closedloop/kinglong/common/svc"
	"github.com/shirou/gopsutil/cpu"
	"runtime"
	"time"
)

func Init() {

	// 初始化日志配置
	log.InitLogConfig()

	// 循环打印cpu占用
	go ResourceOccupancy()

	// 初始化本地配置文件(第1处配置,在本地文件)
	cfg.InitLocalConfig()

	// 初始化Oss连接信息
	cfg.InitOssConfig()

	// 初始化业务逻辑配置信息,配置文件在oss上(第2处配置,在oss文件)
	cfg.InitCloudConfig()

	go cfg.RefreshCloudConfig()

	// 初始化数据闭环平台的配置(第3处配置,在数据闭环平台接口)
	cfg.InitPlatformConfig()

	// 初始化ros节点
	cfg.InitRosConfig()

	// 维护data目录缓存的包数量
	go svc.BagCacheClean()

	// 磁盘占用过高时根据缓存策略处理copy目录
	go svc.DiskClean()

}

func ResourceOccupancy() {
	for {
		// 获取 CPU 使用率
		cpuPercent, err := cpu.Percent(time.Second, false)
		if err != nil {
			log.MonitorLogger.Info("获取cpu使用率报错:", err)
			return
		}

		var m runtime.MemStats
		runtime.ReadMemStats(&m)

		// 计算内存占用百分比
		memoryPercent := float64(m.Alloc) / float64(m.Sys) * 100.0

		log.MonitorLogger.Info("cpu使用率为:", cpuPercent[0]*100, "%,内存使用率为:", memoryPercent, "%")

		// 等待一段时间,例如1秒
		time.Sleep(time.Second)
	}
}