package service import ( "time" "basic.com/valib/go-aiot.git/client" "basic.com/valib/logger.git" ) const ( // 集群数据上报 ClusterDataReport = "cluster-data-report" // 设备安装数据上报 DeviceSdkAppDataReport = "device-sdk-app-data-report" // 摄像机上报 CameraDataReport = "camera-data-report" // 摄像机传感器上报 SensorDataReport = "sensor-data-report" // 国标摄像机上报 CameraGb28181DataReport = "camera-gb28181-data-report" // 场景上报 ScenesDataReport = "scenes-data-report" // 算力设置上报 PollConfigDataReport = "poll-config-data-report" ) const ( // 集群数据上报间隔时长 AiotClusterReport = 60 * time.Second // 设备安装信息上报间隔 AiotDeviceAppSdkReport = 120 * time.Second // 摄像机上报间隔 AiotCameraDataReport = 120 * time.Second ) // 执行数据上报 func startSync(cli *client.Client) { // 集群同步ticker clusterTicker := time.NewTicker(AiotClusterReport) // 设备信息同步ticker deviceTicker := time.NewTicker(AiotDeviceAppSdkReport) // 同步摄像机 cameraTicker := time.NewTicker(AiotCameraDataReport) // 启动同步 go func() { defer func() { if r := recover(); r != nil { logger.Errorf("startSync recover r=%v", r) } }() for { select { case <-clusterTicker.C: if !cli.IsClosed() { // 同步集群信息 go syncClusterData(cli) } case <-deviceTicker.C: if !cli.IsClosed() { // 同步设备信息 go syncDeviceInfo(cli) } case <-cameraTicker.C: if !cli.IsClosed() { // 同步摄像机 go syncCamera(cli) } } } }() if !cli.IsClosed() { // 同步集群信息 syncClusterData(cli) // 同步设备信息 syncDeviceInfo(cli) // 同步摄像机 syncCamera(cli) } }