package main

import (
	"cicv-data-closedloop/common/config/c_log"
	commonConfig "cicv-data-closedloop/pji/common/cfg"
	commonInit "cicv-data-closedloop/pji/common/init"
	commonService "cicv-data-closedloop/pji/common/svc"
	masterConfig "cicv-data-closedloop/pji/master/package/cfg"
	masterService "cicv-data-closedloop/pji/master/package/svc"
	"runtime"
	"time"
)

func init() {
	runtime.GOMAXPROCS(1)
	// 初始化日志配置
	c_log.InitLog("/root/rosbag-handle/log/", "pji-master")
	commonInit.Init()
	masterConfig.InitTriggerConfig()
	commonConfig.InitKillSignalListener(commonConfig.CloudConfig.Hosts[0].Ip)

	// 等待重启,接收到重启信号,会把信号分发给以下channel
	go commonService.WaitKillSelf()
	masterConfig.InitNacos()
}

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 {}
}