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