package tasks
|
|
import (
|
"context"
|
"time"
|
|
"vamicro/device-client/models"
|
"vamicro/device-client/service"
|
|
"basic.com/valib/logger.git"
|
)
|
|
var (
|
devCtx context.Context
|
devCancel context.CancelFunc
|
)
|
|
func Start() {
|
// 启动设备信息上报
|
go deviceInfoReportTask()
|
}
|
|
func ResetDeviceInfoReportTask() {
|
devCancel()
|
}
|
|
func deviceInfoReportTask() {
|
devCtx, devCancel = context.WithCancel(context.Background())
|
|
interval := models.ReportConfig.Interval
|
if interval == 0 {
|
interval = 10
|
}
|
|
logger.Infof("start device info report task, server:%s interval:%d.", models.ReportConfig.ServerAddr, interval)
|
|
ticker := time.NewTicker(1 * time.Second)
|
for {
|
select {
|
case <-devCtx.Done():
|
logger.Warn("task exit!!")
|
go deviceInfoReportTask()
|
|
return
|
case <-ticker.C:
|
logger.Debug("report device info.")
|
|
err := service.ReportDeviceInfo()
|
if err != nil {
|
logger.Warn(err.Error())
|
}
|
|
ticker.Reset(time.Duration(interval) * time.Second)
|
}
|
}
|
}
|