package main import ( commonConfig "cicv-data-closedloop/aarch64/pjibot_guide/common/config" commonService "cicv-data-closedloop/aarch64/pjibot_guide/common/service" "cicv-data-closedloop/aarch64/pjibot_guide/common/variable" masterConfig "cicv-data-closedloop/aarch64/pjibot_guide/master/package/config" masterService "cicv-data-closedloop/aarch64/pjibot_guide/master/package/service" "cicv-data-closedloop/common/config/c_log" "cicv-data-closedloop/common/util" "runtime" "time" ) var applicationName = "pji-master" func init() { runtime.GOMAXPROCS(1) // 初始化日志配置 c_log.InitLog(variable.LogDir, applicationName) // 初始化本地配置文件(第1处配置,在本地文件) commonConfig.InitLocalConfig(variable.LocalConfigPath) // 初始化Oss连接信息 commonConfig.InitOssConfig() // 初始化业务逻辑配置信息,配置文件在oss上(第2处配置,在oss文件) commonConfig.InitCloudConfig() _ = util.RemoveSubFiles(commonConfig.CloudConfig.BagDataDir) _ = util.RemoveSubFiles(commonConfig.CloudConfig.BagCopyDir) go commonConfig.RefreshCloudConfig() // 初始化数据闭环平台的配置(第3处配置,在数据闭环平台接口) commonConfig.InitPlatformConfig() // 初始化ros节点 commonConfig.InitRosConfig() // 发送资源占用信息 go commonConfig.SendResourceUsage() // 维护data目录缓存的包数量 go commonService.BagCacheClean() // 磁盘占用过高时根据缓存策略处理copy目录 go commonService.DiskClean() masterConfig.InitTriggerConfig() commonConfig.InitKillSignalListener(commonConfig.CloudConfig.Hosts[0].Ip) // 等待重启,接收到重启信号,会把信号分发给以下channel go commonService.WaitKillSelf() // 先采集地图bag包 masterService.CollectOneMsg() } func main() { // 1 负责打包数据到data目录 go commonService.BagRecord(commonConfig.CloudConfig.Hosts[0].Name) time.Sleep(time.Duration(10) * time.Second) // 2 负责监控故障,并修改timeWindow go masterService.PrepareTimeWindowProducerQueue() // 3 将时间窗口内的包全部move出去,并等待当前时间窗口结束触发上传 go masterService.RunTimeWindowProducerQueue() // 4 排队运行时间窗口 go commonService.RunTimeWindowConsumerQueue(commonConfig.CloudConfig.Hosts[0].Name) // 阻塞主线程,等待其他线程执行。 select {} }