main.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package main
  2. import (
  3. commonConfig "cicv-data-closedloop/aarch64/pjibot_guide/common/config"
  4. commonService "cicv-data-closedloop/aarch64/pjibot_guide/common/service"
  5. "cicv-data-closedloop/aarch64/pjibot_guide/common/variable"
  6. masterConfig "cicv-data-closedloop/aarch64/pjibot_guide/master/package/config"
  7. masterService "cicv-data-closedloop/aarch64/pjibot_guide/master/package/service"
  8. "cicv-data-closedloop/common/config/c_log"
  9. "cicv-data-closedloop/common/util"
  10. "runtime"
  11. "time"
  12. )
  13. var applicationName = "pji-master"
  14. func init() {
  15. runtime.GOMAXPROCS(1)
  16. // 初始化日志配置
  17. c_log.InitLog(variable.LogDir, applicationName)
  18. // 初始化本地配置文件(第1处配置,在本地文件)
  19. commonConfig.InitLocalConfig(variable.LocalConfigPath)
  20. // 初始化Oss连接信息
  21. commonConfig.InitOssConfig()
  22. // 初始化业务逻辑配置信息,配置文件在oss上(第2处配置,在oss文件)
  23. commonConfig.InitCloudConfig()
  24. _ = util.RemoveSubFiles(commonConfig.CloudConfig.BagDataDir)
  25. _ = util.RemoveSubFiles(commonConfig.CloudConfig.BagCopyDir)
  26. go commonConfig.RefreshCloudConfig()
  27. // 初始化数据闭环平台的配置(第3处配置,在数据闭环平台接口)
  28. commonConfig.InitPlatformConfig()
  29. // 初始化ros节点
  30. commonConfig.InitRosConfig()
  31. // 发送资源占用信息
  32. go commonConfig.SendResourceUsage()
  33. // 维护data目录缓存的包数量
  34. go commonService.BagCacheClean()
  35. // 磁盘占用过高时根据缓存策略处理copy目录
  36. go commonService.DiskClean()
  37. masterConfig.InitTriggerConfig()
  38. commonConfig.InitKillSignalListener(commonConfig.CloudConfig.Hosts[0].Ip)
  39. // 等待重启,接收到重启信号,会把信号分发给以下channel
  40. go commonService.WaitKillSelf()
  41. // 先采集地图bag包
  42. masterService.CollectOneMsg()
  43. }
  44. func main() {
  45. // 1 负责打包数据到data目录
  46. go commonService.BagRecord(commonConfig.CloudConfig.Hosts[0].Name)
  47. time.Sleep(time.Duration(10) * time.Second)
  48. // 2 负责监控故障,并修改timeWindow
  49. go masterService.PrepareTimeWindowProducerQueue()
  50. // 3 将时间窗口内的包全部move出去,并等待当前时间窗口结束触发上传
  51. go masterService.RunTimeWindowProducerQueue()
  52. // 4 排队运行时间窗口
  53. go commonService.RunTimeWindowConsumerQueue(commonConfig.CloudConfig.Hosts[0].Name)
  54. // 阻塞主线程,等待其他线程执行。
  55. select {}
  56. }