提供读配置文件的监控服务器程序

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值