panlei
2019-07-13 dd753957ef55cbb17dce17771fb17469f90088e6
定时器缓冲容错
2个文件已修改
18 ■■■■■ 已修改文件
ruleserver/ruleToformula.go 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/timeTicker.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go
@@ -546,10 +546,16 @@
            for k, timeEle := range TimeEleList {
                if strings.Contains(k, groupId) {
                    if timeEle.AlarmFlag {
                        logger.Debug("------------------------------杀死定时器,报警此帧状态改变的数据,此时的计数器的值为",timeEle.N)
                        flagTime = "12"
                        args.RuleResult["timeLabel"] = flagTime
                        delete(TimeEleList,k)
                        if timeEle.BufferFlag == 0 {
                            logger.Debug("------------------------------杀死定时器,报警此帧状态改变的数据,此时的计数器的值为",timeEle.N)
                            flagTime = "12"
                            args.RuleResult["timeLabel"] = flagTime
                            delete(TimeEleList,k)
                        } else {
                            if timeEle.BufferFlag > 0 {
                                timeEle.BufferFlag--
                            }
                        }
                    } else {
                        delete(TimeEleList,k)
                    }
@@ -885,7 +891,7 @@
            if flag {
                timeLength, _ := strconv.Atoi(rule.SdkArgValue)
                timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, CacheSdkData: ResultMsg{message,args.RuleResult}} // 扔进去一个定时器元素(并缓存当前画面帧数据)
                timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false,BufferFlag:6, CacheSdkData: ResultMsg{message,args.RuleResult}} // 扔进去一个定时器元素(并缓存当前画面帧数据)
                //TimeEleList = make(map[string]timeElement)
                TimeEleList[groupId+" "+rule.Id] = &timeEle // 定时器元素以摄像机id拼接区域id为键
                logger.Info("创建了计数器并且计数器集合为:", TimeEleList)
ruleserver/timeTicker.go
@@ -15,7 +15,7 @@
type TimeElement struct {
    N            int                  // 按时间依次递减的当前值
    InitN        int                  // 赋值后就不变的初始值
    BufferFlag   int                  // 缓冲容错位 连续帧false才为false
    BufferFlag   int                  // 缓冲容错位 连续n帧false才为false
    AlarmFlag    bool                 // 报警标志位 定时器开启后第一次报警时会被置为true 往后再来报警也不会插进ES
    CacheSdkData ResultMsg // 定时器的缓存数据 持续时间类的开启定时器时要缓存一帧
    GroupId      string               // 联动规则需要记录下此时的规则组id