goAdapter/main.go

96 lines
2.4 KiB
Go
Raw Normal View History

2020-06-28 18:15:50 +08:00
package main
import (
2020-07-06 09:51:05 +08:00
"goAdapter/config"
"goAdapter/device"
"goAdapter/httpServer"
"goAdapter/setting"
2020-06-28 18:15:50 +08:00
"log"
"net/http"
"time"
2020-07-06 09:51:05 +08:00
"github.com/robfig/cron"
"golang.org/x/sync/errgroup"
)
2020-06-28 18:15:50 +08:00
var (
g errgroup.Group
)
2020-07-06 09:51:05 +08:00
func main() {
2020-06-28 18:15:50 +08:00
//记录起始时间
2020-07-06 09:51:05 +08:00
setting.GetTimeStart()
2020-06-28 18:15:50 +08:00
log.Println("goteway V0.0.1")
2020-07-07 18:08:01 +08:00
2020-07-06 09:51:05 +08:00
setting.MemoryDataStream = setting.NewDataStreamTemplate("内存使用率")
setting.DiskDataStream = setting.NewDataStreamTemplate("硬盘使用率")
setting.DeviceOnlineDataStream = setting.NewDataStreamTemplate("设备在线率")
setting.DevicePacketLossDataStream = setting.NewDataStreamTemplate("通信丢包率")
2020-06-28 18:15:50 +08:00
/**************获取配置文件***********************/
2020-07-06 09:51:05 +08:00
config.GetConf()
2020-06-28 18:15:50 +08:00
/**************网口初始化***********************/
2020-07-06 09:51:05 +08:00
for _, v := range setting.NetworkParamList.NetworkParam {
log.Println("set network ", v.Name)
setting.SetNetworkParam(v.ID, v)
2020-06-28 18:15:50 +08:00
}
2020-07-06 09:51:05 +08:00
setting.NetworkParamList = setting.GetNetworkParam()
2020-06-28 18:15:50 +08:00
/**************变量模板初始化****************/
2020-07-06 09:51:05 +08:00
device.DeviceNodeManageInit()
2020-06-28 18:15:50 +08:00
/**************目标平台初始化****************/
2020-07-06 09:51:05 +08:00
setting.RemotePlatformInit()
2020-06-28 18:15:50 +08:00
/**************创建定时获取网络状态的任务***********************/
// 定义一个cron运行器
cronGetNetStatus := cron.New()
// 定时5秒每5秒执行print5
2020-07-06 09:51:05 +08:00
cronGetNetStatus.AddFunc("*/5 * * * * *", setting.GetNetworkStatus)
2020-06-28 18:15:50 +08:00
// 定时60秒
for _,v := range device.CollectInterfaceMap{
CommunicationManage := device.NewCommunicationManageTemplate()
CommunicationManage.CollInterfaceName = v.CollInterfaceName
cronGetNetStatus.AddFunc("*/10 * * * * *", CommunicationManage.CommunicationManagePoll)
go CommunicationManage.CommunicationManageDel()
}
2020-06-28 18:15:50 +08:00
// 定时60秒
//cronGetNetStatus.AddFunc("*/10 * * * * *", CommunicationManageAddEmergencyTest)
// 定时60s
2020-07-06 09:51:05 +08:00
cronGetNetStatus.AddFunc("*/60 * * * * *", func() {
2020-06-28 18:15:50 +08:00
//threadModuleParam.threadModuleReadNetStatus()
})
// 定时60秒
2020-07-06 09:51:05 +08:00
cronGetNetStatus.AddFunc("*/60 * * * * *", setting.CollectSystemParam)
2020-06-28 18:15:50 +08:00
cronGetNetStatus.Start()
defer cronGetNetStatus.Stop()
//mqttAppConnect()
/**************httpserver初始化****************/
// 默认启动方式,包含 Logger、Recovery 中间件
serverWeb := &http.Server{
Addr: ":8080",
2020-07-06 09:51:05 +08:00
Handler: httpServer.RouterWeb(),
2020-06-28 18:15:50 +08:00
ReadTimeout: 5 * time.Second,
WriteTimeout: 10 * time.Second,
}
g.Go(func() error {
return serverWeb.ListenAndServe()
})
if err := g.Wait(); err != nil {
log.Fatal(err)
}
}