manager.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. package main
  2. import (
  3. "sparrow/pkg/deviceAlarm"
  4. "sparrow/pkg/deviceStatus"
  5. "sparrow/pkg/online"
  6. "sparrow/pkg/otaUpgrade"
  7. "sparrow/pkg/rpcs"
  8. "sparrow/pkg/token"
  9. )
  10. type DeviceManager struct {
  11. onlineManager *online.Manager
  12. tokenHelper *token.Helper
  13. otaManager *otaUpgrade.OtaManager
  14. statusManager *deviceStatus.DevStatusManager
  15. alarmManager *deviceAlarm.DevAlarmManager
  16. }
  17. func NewDeviceManager(redishost string, port, db int) *DeviceManager {
  18. mgr := online.NewManager(redishost, port, db)
  19. helper := token.NewHelper(redishost, port, db)
  20. otaMgr := otaUpgrade.NewOtaManager(redishost, port, db)
  21. statusMgr := deviceStatus.NewDevStatusManager(redishost, port)
  22. alarmMgr := deviceAlarm.NewDevAlarmManager(redishost, port, db)
  23. return &DeviceManager{
  24. onlineManager: mgr,
  25. tokenHelper: helper,
  26. otaManager: otaMgr,
  27. statusManager: statusMgr,
  28. alarmManager: alarmMgr,
  29. }
  30. }
  31. func (dm *DeviceManager) GenerateDeviceAccessToken(args rpcs.ArgsGenerateDeviceAccessToken, reply *rpcs.ReplyGenerateDeviceAccessToken) error {
  32. token, err := dm.tokenHelper.GenerateToken(args.Id)
  33. if err != nil {
  34. return err
  35. }
  36. reply.AccessToken = token
  37. return nil
  38. }
  39. func (dm *DeviceManager) ValidateDeviceAccessToken(args rpcs.ArgsValidateDeviceAccessToken, reply *rpcs.ReplyValidateDeviceAccessToken) error {
  40. return dm.tokenHelper.ValidateToken(args.Id, args.AccessToken)
  41. }
  42. func (dm *DeviceManager) GetOnline(args rpcs.ArgsGetOnline, reply *rpcs.ReplyGetOnline) error {
  43. return dm.onlineManager.GetOnline(args.Id, online.Status{
  44. ClientIP: args.ClientIP,
  45. AccessRPCHost: args.AccessRPCHost,
  46. HeartbeatInterval: args.HeartbeatInterval,
  47. })
  48. }
  49. func (dm *DeviceManager) GetOnlineV2(args rpcs.ArgsGetOnline, reply *rpcs.ReplyGetOnline) error {
  50. return dm.onlineManager.GetOnlineV2(args.Id, online.Status{
  51. ClientIP: args.ClientIP,
  52. AccessRPCHost: args.AccessRPCHost,
  53. HeartbeatInterval: args.HeartbeatInterval,
  54. })
  55. }
  56. func (dm *DeviceManager) HeartBeat(args rpcs.ArgsHeartBeat, reply *rpcs.ReplyHeartBeat) error {
  57. return dm.onlineManager.SetHeartbeat(args.Id)
  58. }
  59. func (dm *DeviceManager) GetOffline(args rpcs.ArgsGetOffline, reply *rpcs.ReplyGetOffline) error {
  60. return dm.onlineManager.GetOffline(args.Id)
  61. }
  62. func (dm *DeviceManager) GetDeviceOnlineStatus(args rpcs.ArgsGetDeviceOnlineStatus, reply *rpcs.ReplyGetDeviceOnlineStatus) error {
  63. status, err := dm.onlineManager.GetStatus(args.Id)
  64. if err != nil {
  65. return err
  66. }
  67. if status != nil {
  68. reply.ClientIP = status.ClientIP
  69. reply.AccessRPCHost = status.AccessRPCHost
  70. reply.HeartbeatInterval = status.HeartbeatInterval
  71. }
  72. return nil
  73. }
  74. func (dm *DeviceManager) SavaFile(args rpcs.ArgsOtaFile, reply *rpcs.ReplyGetOffline) error {
  75. err := dm.otaManager.SavaFile(args.FileId, args.FileData)
  76. if err != nil {
  77. return err
  78. }
  79. return nil
  80. }
  81. func (dm *DeviceManager) GetFile(args rpcs.ArgsOtaFile, reply *rpcs.ReplyOtaFile) error {
  82. file, err := dm.otaManager.GetFile(args.FileId)
  83. if err != nil {
  84. return err
  85. }
  86. if file != nil {
  87. reply.File = file.FileData
  88. }
  89. return nil
  90. }
  91. func (dm *DeviceManager) UpdateProgress(args rpcs.ArgsOtaProgress, reply *rpcs.ReplyGetOffline) error {
  92. err := dm.otaManager.UpdateProgress(args.DeviceId, args.Progress)
  93. if err != nil {
  94. return err
  95. }
  96. return nil
  97. }
  98. func (dm *DeviceManager) GetProgress(args rpcs.ArgsOtaProgress, reply *rpcs.ReplyOtaProgress) error {
  99. progress, err := dm.otaManager.GetProgress(args.DeviceId)
  100. if err != nil {
  101. return err
  102. }
  103. if progress != nil {
  104. reply.Progress = progress.Progress
  105. }
  106. return nil
  107. }
  108. func (dm *DeviceManager) GetDeviceStatus(args rpcs.ArgsGetStatus, reply *rpcs.ReplyStatus) error {
  109. status, err := dm.statusManager.GetDeviceStatus(args.Id)
  110. if err != nil {
  111. return err
  112. }
  113. if status != "" {
  114. reply.Status = status
  115. }
  116. return nil
  117. }
  118. func (dm *DeviceManager) GetDeviceInfo(args rpcs.ArgsGetStatus, reply *rpcs.ReplayInfo) error {
  119. info, err := dm.statusManager.GetDeviceInfo(args.Id)
  120. if err != nil {
  121. return err
  122. }
  123. if info != "" {
  124. reply.Info = info
  125. }
  126. return nil
  127. }
  128. func (dm *DeviceManager) SetAlarm(args rpcs.ArgsAlarmInfo, reply *rpcs.ArgsAlarmInfo) error {
  129. return dm.alarmManager.SetAlarm(&deviceAlarm.AlarmParams{
  130. DeviceCode: args.DeviceCode,
  131. FirstReportTime: args.FirstReportTime,
  132. LastAlarmTime: args.LastAlarmTime,
  133. })
  134. }
  135. func (dm *DeviceManager) GetAlarm(args rpcs.ArgsGetAlarm, reply *rpcs.ReplayAlarm) error {
  136. info, err := dm.alarmManager.GetAlarm(args.DeviceCode)
  137. if err != nil {
  138. return err
  139. }
  140. if info != nil {
  141. reply.AlarmParams = info
  142. }
  143. return nil
  144. }
  145. func (dm *DeviceManager) DelAlarm(args rpcs.ArgsGetAlarm, reply *rpcs.ReplayAlarm) error {
  146. return dm.alarmManager.DeleteAlarm(args.DeviceCode)
  147. }