// delayLiveAlarm
package main
import (
//"fmt"
"libconf/goini"
log "log4go"
"net/http"
"strconv"
"time"
)
var msg string = ""
var result string = "1"
func trimstring(src string) string {
rs := []rune(src)
rl := len(src)
src = string(rs[0:rl])
return src
}
func checkStatus(w http.ResponseWriter, req *http.Request) {
log.Debug("checkStatus")
respBody := "{\"result\":" + result + ",\"msg\":" + msg + "}"
w.Write([]byte(respBody))
}
func main() {
//start http server
if err := log.SetupLogWithConf("./log.json"); err != nil {
panic(err)
}
defer log.Close()
alarmConf_ptr := goini.Init("./alarmConf.ini")
stmp := alarmConf_ptr.Read_string("root", "port", "9011")
stmp = trimstring(stmp)
port := ":" + stmp
log.Debug("stmp:%s,port:%s", stmp, port)
config_ptr := goini.Init("./config.ini")
stmp = config_ptr.Read_string("TS", "count", "1")
stmp = trimstring(stmp)
count, _ := strconv.Atoi(stmp)
log.Debug("stmp:%s,count:%d", stmp, count)
ticker := time.NewTicker(time.Second * 60)
//channelTsMap
channelTsMap := make(map[string]string)
go func() {
for _ = range ticker.C {
//log.Debug("ticked at %v", time.Now())
message := ""
result = "1"
for i := 0; i < count; i++ {
locRes := "1"
ts_num := "TS_" + strconv.Itoa(i+1)
log.Debug("ts_num:%s", ts_num)
stmp = config_ptr.Read_string(ts_num, "ts_path", "/data/channellist/channel01")
stmp = trimstring(stmp)
tsPath := stmp
log.Debug("tsPath:%s", tsPath)
stmp := config_ptr.Read_string(ts_num, "current_sequence", "1797000")
stmp = trimstring(stmp)
sequence := stmp
log.Debug("stmp:%s,cur seq:%s,old seq:%s", stmp, sequence, channelTsMap[tsPath])
if sequence == channelTsMap[tsPath] {
locRes = "0"
result = "0"
log.Error("old seq:%s, latest seq: %s", channelTsMap[tsPath], sequence)
}
//save the latest seq
channelTsMap[tsPath] = sequence
message += tsPath
message += ":"
message += locRes
if i != count-1 {
message += ","
}
}
msg = message
log.Debug("latest result:%s message:%s", result, msg)
config_ptr = goini.Init("./config.ini")
}
}()
http.HandleFunc("/streamsStatus", checkStatus)
http.ListenAndServe(port, nil)
}
提供读配置文件的监控服务器程序
最新推荐文章于 2023-12-26 18:46:59 发布