main.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package main
  2. import (
  3. commonConfig "cicv-data-closedloop/aarch64/pjisuv/common/config"
  4. commonService "cicv-data-closedloop/aarch64/pjisuv/common/service"
  5. masterConfig "cicv-data-closedloop/aarch64/pjisuv/master/config"
  6. masterService "cicv-data-closedloop/aarch64/pjisuv/master/service"
  7. "cicv-data-closedloop/common/config/c_log"
  8. "cicv-data-closedloop/common/util"
  9. )
  10. func init() {
  11. // 初始化日志配置
  12. // runtime.GOMAXPROCS(1)
  13. c_log.InitLog("/mnt/media/sda1/cicv-data-closedloop/log/", "pjisuv-master")
  14. //c_log.InitLog("/userdata/cicv-data-closedloop/log/", "pjisuv-master")
  15. // 初始化本地配置文件(第1处配置,在本地文件)
  16. commonConfig.InitLocalConfig()
  17. // 初始化Oss连接信息
  18. commonConfig.InitOssConfig()
  19. // 初始化业务逻辑配置信息,配置文件在oss上(第2处配置,在oss文件)
  20. commonConfig.InitCloudConfig()
  21. _ = util.RemoveSubFiles(commonConfig.CloudConfig.BagDataDir)
  22. _ = util.RemoveSubFiles(commonConfig.CloudConfig.BagCopyDir)
  23. go commonConfig.RefreshCloudConfig()
  24. // 初始化数据闭环平台的配置(第3处配置,在数据闭环平台接口)
  25. commonConfig.InitPlatformConfig()
  26. // 初始化ros节点
  27. commonConfig.InitRosConfig()
  28. // 发送资源占用信息
  29. go commonConfig.SendResourceUsage()
  30. // 维护data目录缓存的包数量
  31. go commonService.BagCacheClean()
  32. // 磁盘占用过高时根据缓存策略处理copy目录
  33. go commonService.DiskClean()
  34. // 初始化加载触发器插件文件
  35. masterConfig.InitTriggerConfig()
  36. // 初始化rpc监听
  37. commonConfig.InitKillSignalListener(commonConfig.CloudConfig.Hosts[0].Ip)
  38. // 等待重启,接收到重启信号,会把信号分发给以下channel
  39. go commonService.WaitKillSelf()
  40. // 定时上传故障码日志
  41. masterService.ForFaultCodeLog()
  42. }
  43. func main() {
  44. // 1 负责打包数据到data目录
  45. go commonService.BagRecord(commonConfig.CloudConfig.Hosts[0].Name)
  46. // 2 启动第4个线程,负责监控故障,并修改timeWindow
  47. go masterService.PrepareTimeWindowProducerQueue()
  48. // 3
  49. go masterService.RunTimeWindowProducerQueue()
  50. // 4 排队运行时间窗口
  51. go commonService.RunTimeWindowConsumerQueue(commonConfig.CloudConfig.Hosts[0].Name)
  52. //// todo 算法比赛临时使用
  53. //go service.ForCompetition()
  54. // 阻塞主线程,等待其他线程执行。
  55. select {}
  56. }