main.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package main
  2. import (
  3. "github.com/sirupsen/logrus"
  4. "net/http"
  5. _ "net/http/pprof"
  6. "os"
  7. "path/filepath"
  8. "runtime"
  9. "lc/common/models"
  10. "lc/common/util"
  11. "os/signal"
  12. "syscall"
  13. )
  14. var MySQLConfig util.MySQLConfig
  15. var RedisConfig util.RedisConfig
  16. var MQTTConfig util.MQTTConfig
  17. var MqttconfigHl util.MQTTConfig //海蓝
  18. var mainConfig MainConfig
  19. var gopool *util.Pool
  20. var IDGen util.IdWorker
  21. func GetNextSeq() uint64 {
  22. u64, err := IDGen.NextId()
  23. if err != nil {
  24. logrus.Errorf("IDGen.NextId发生错误:%s", err.Error())
  25. u64 = util.MlNow().Unix()
  26. }
  27. return uint64(u64)
  28. }
  29. func InitMysql(conf *util.MySQLConfig) {
  30. models.InitDB(conf)
  31. }
  32. func DestroyMysql() {
  33. models.DestroyDB()
  34. }
  35. func ReadConfig() bool {
  36. dir, _ := os.Getwd()
  37. fPath := dir + string(filepath.Separator) + "conf" + string(filepath.Separator)
  38. errA := RedisConfig.ReadConfig(fPath, "redis")
  39. errB := MySQLConfig.ReadConfig(fPath, "mysql")
  40. errC := MQTTConfig.ReadConfig(fPath, "broker")
  41. errD := mainConfig.ReadConfig(fPath, "ipolesvr")
  42. _ = MqttconfigHl.ReadConfig(fPath, "broker_highland")
  43. if !errA {
  44. logrus.Error("读取redis配置失败")
  45. }
  46. if !errB {
  47. logrus.Error("读取mysql配置失败")
  48. }
  49. if !errC {
  50. logrus.Error("读取mqtt broker配置失败")
  51. }
  52. if !errD {
  53. logrus.Error("读取ipolesvr配置失败")
  54. }
  55. return errA && errB && errC && errD
  56. }
  57. func main() {
  58. signal.Ignore(syscall.SIGHUP)
  59. runtime.GOMAXPROCS(runtime.NumCPU())
  60. util.InitLogrus("release")
  61. err := IDGen.InitIdWorker(1000, 2)
  62. if err != nil {
  63. return
  64. }
  65. go func() {
  66. logrus.Infoln(http.ListenAndServe(":8197", nil))
  67. }()
  68. if !ReadConfig() {
  69. logrus.Fatal("读取配置文件失败,服务退出")
  70. }
  71. GetMQTTMgr()
  72. GetHlMqttMgr() //hl
  73. InitMysql(&MySQLConfig)
  74. defer DestroyMysql()
  75. InitRedis(&RedisConfig)
  76. defer DestroyRedis()
  77. GetGwHandler().SubscribeTopics()
  78. GetModbusDeviceHandler().SubscribeTopics()
  79. GetChzbConcentratorMgr().SubscribeTopics()
  80. GetHlZigbeeConcentratorMgr().SubscribeTopics()
  81. GetSosMgr().SubscribeTopics()
  82. GetIPCMgr().SubscribeTopics()
  83. GetCltLedMgr().SubscribeTopics()
  84. GetYMLampControllerMgr().SubscribeTopics()
  85. GetItsMgr().SubscribeTopics()
  86. GetRadarHandler().SubscribeTopics()
  87. GetCableGuardianHandler().SubscribeTopics()
  88. calcTask()
  89. gopool = util.NewPool(20)
  90. gopool.Add(StatData, 1)
  91. gopool.Add(GetGwHandler().Handler, 2) //网关
  92. gopool.Add(GetModbusDeviceHandler().Handler, 3) //环境 水位
  93. gopool.Add(GetHlZigbeeConcentratorMgr().Handler, 4) //海蓝
  94. gopool.Add(GetChzbConcentratorMgr().Handler, 5)
  95. gopool.Add(GetLampStrategyMgr().Handler, 6)
  96. gopool.Add(GetSosMgr().Handler, 7)
  97. gopool.Add(GetIPCMgr().Handler, 8)
  98. gopool.Add(GetSrsMgr().Handler, 9)
  99. gopool.Add(GetEventMgr().Handler, 10)
  100. gopool.Add(GetCltLedMgr().Handler, 11)
  101. gopool.Add(GetYMLampControllerMgr().Handler, 12)
  102. gopool.Add(GetSrsMgr().StartWeb, 13)
  103. gopool.Add(GetItsMgr().Handler, 14)
  104. gopool.Add(GetBizAlarmMgr().Handler, 15)
  105. gopool.Add(GetRadarHandler().Handler, 16)
  106. gopool.Add(GetCableGuardianHandler().Handler, 17)
  107. gopool.Run()
  108. gopool.Wait()
  109. }