| | |
| | | package ruleserver |
| | | |
| | | import ( |
| | | "fmt" |
| | | "ruleprocess/logger" |
| | | logger "github.com/alecthomas/log4go" |
| | | "ruleprocess/structure" |
| | | "strings" |
| | | "time" |
| | |
| | | |
| | | func TimeTicker() { |
| | | ticker := time.NewTicker(1 * time.Second) |
| | | go func(ticker *time.Ticker) { |
| | | defer ticker.Stop() |
| | | for { |
| | | select { |
| | | case <-ticker.C: |
| | | logger.Info("定时器执行单元", time.Now().Unix()) |
| | | fmt.Println("定时器执行单元", time.Now().Unix()) |
| | | // 每秒钟计数器池子里所有的计数器元素都减一,减到0的是该报警的 |
| | | rw.Lock() |
| | | for k, timeEle := range TimeEleList { |
| | | if timeEle.N > 0 { |
| | | timeEle.N = timeEle.N - 1 |
| | | logger.Error("-------------------------------------打印定时器计数元素当前值-----------------------------------------:", timeEle.N) |
| | | } |
| | | if timeEle.GroupId != "" && timeEle.N == 0 { |
| | | // 说明是联动任务的时间窗口 到点儿了该销毁了,再来了再创建 |
| | | delete(TimeEleList, k) |
| | | } |
| | | //go func(ticker *time.Ticker) { |
| | | defer ticker.Stop() |
| | | for { |
| | | select { |
| | | case <-ticker.C: |
| | | //logger.Info("定时器执行单元", time.Now().Unix()) |
| | | //fmt.Println("定时器执行单元", time.Now().Unix()) |
| | | // 每秒钟计数器池子里所有的计数器元素都减一,减到0的是该报警的 |
| | | // 图片定时器系列 |
| | | rw.Lock() |
| | | for k, timeEle := range TimeEleList { |
| | | if timeEle.N > 0 { |
| | | timeEle.N = timeEle.N - 1 |
| | | //logger.Debug("-------------------------------------打印定时器计数元素当前值-----------------------------------------:", timeEle.N) |
| | | } |
| | | rw.Unlock() |
| | | case stop := <-stopChan: |
| | | if stop { |
| | | logger.Info("定时器结束") |
| | | return |
| | | //os.Exit(0) |
| | | if timeEle.GroupId != "" && timeEle.N == 0 { |
| | | // 说明是联动任务的时间窗口 到点儿了该销毁了,再来了再创建 |
| | | delete(TimeEleList, k) |
| | | } |
| | | } |
| | | rw.Unlock() |
| | | // 目标定时器系列 |
| | | for _,cameraArea := range structure.StaticMap { |
| | | for _,obj := range cameraArea.Targets { |
| | | if obj.N > 0 { |
| | | obj.N = obj.N - 1 |
| | | } |
| | | } |
| | | } |
| | | case stop := <-stopChan: |
| | | if stop { |
| | | logger.Info("定时器结束") |
| | | return |
| | | //os.Exit(0) |
| | | } |
| | | } |
| | | }(ticker) |
| | | } |
| | | //}(ticker) |
| | | } |
| | | func StopTimeTicker() { |
| | | stopChan <- true |
| | |
| | | func (p SubList) Less(i, j int) bool { return p[i].Sort < p[j].Sort } |
| | | |
| | | // 结构体根据某字段排序 |
| | | type resultList []*structure.LittleRuleResult |
| | | type ResultList []*structure.LittleRuleResult |
| | | |
| | | func (p resultList) Swap(i, j int) { p[i], p[j] = p[j], p[i] } |
| | | func (p resultList) Len() int { return len(p) } |
| | | func (p resultList) Less(i, j int) bool { return p[i].Sort < p[j].Sort } |
| | | func (p ResultList) Swap(i, j int) { p[i], p[j] = p[j], p[i] } |
| | | func (p ResultList) Len() int { return len(p) } |
| | | func (p ResultList) Less(i, j int) bool { return p[i].Sort < p[j].Sort } |