manager.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  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/scene"
  9. "sparrow/pkg/token"
  10. )
  11. type DeviceManager struct {
  12. onlineManager *online.Manager
  13. tokenHelper *token.Helper
  14. otaManager *otaUpgrade.OtaManager
  15. statusManager *deviceStatus.DevStatusManager
  16. alarmManager *deviceAlarm.DevAlarmManager
  17. sceneManager *scene.Manager
  18. }
  19. func NewDeviceManager(redishost string, port, db int) *DeviceManager {
  20. mgr := online.NewManager(redishost, port, db)
  21. helper := token.NewHelper(redishost, port, db)
  22. otaMgr := otaUpgrade.NewOtaManager(redishost, port, db)
  23. statusMgr := deviceStatus.NewDevStatusManager(redishost, port)
  24. alarmMgr := deviceAlarm.NewDevAlarmManager(redishost, port)
  25. sceneMgr := scene.NewSceneManager(redishost, port)
  26. return &DeviceManager{
  27. onlineManager: mgr,
  28. tokenHelper: helper,
  29. otaManager: otaMgr,
  30. statusManager: statusMgr,
  31. alarmManager: alarmMgr,
  32. sceneManager: sceneMgr,
  33. }
  34. }
  35. func (dm *DeviceManager) GenerateDeviceAccessToken(args rpcs.ArgsGenerateDeviceAccessToken, reply *rpcs.ReplyGenerateDeviceAccessToken) error {
  36. token, err := dm.tokenHelper.GenerateToken(args.Id)
  37. if err != nil {
  38. return err
  39. }
  40. reply.AccessToken = token
  41. return nil
  42. }
  43. func (dm *DeviceManager) ValidateDeviceAccessToken(args rpcs.ArgsValidateDeviceAccessToken, reply *rpcs.ReplyValidateDeviceAccessToken) error {
  44. return dm.tokenHelper.ValidateToken(args.Id, args.AccessToken)
  45. }
  46. func (dm *DeviceManager) GetOnline(args rpcs.ArgsGetOnline, reply *rpcs.ReplyGetOnline) error {
  47. return dm.onlineManager.GetOnline(args.Id, online.Status{
  48. ClientIP: args.ClientIP,
  49. AccessRPCHost: args.AccessRPCHost,
  50. HeartbeatInterval: args.HeartbeatInterval,
  51. })
  52. }
  53. func (dm *DeviceManager) GetOnlineV2(args rpcs.ArgsGetOnline, reply *rpcs.ReplyGetOnline) error {
  54. return dm.onlineManager.GetOnlineV2(args.Id, online.Status{
  55. ClientIP: args.ClientIP,
  56. AccessRPCHost: args.AccessRPCHost,
  57. HeartbeatInterval: args.HeartbeatInterval,
  58. })
  59. }
  60. func (dm *DeviceManager) HeartBeat(args rpcs.ArgsHeartBeat, reply *rpcs.ReplyHeartBeat) error {
  61. return dm.onlineManager.SetHeartbeat(args.Id)
  62. }
  63. func (dm *DeviceManager) GetOffline(args rpcs.ArgsGetOffline, reply *rpcs.ReplyGetOffline) error {
  64. return dm.onlineManager.GetOffline(args.Id)
  65. }
  66. func (dm *DeviceManager) GetDeviceOnlineStatus(args rpcs.ArgsGetDeviceOnlineStatus, reply *rpcs.ReplyGetDeviceOnlineStatus) error {
  67. status, err := dm.onlineManager.GetStatus(args.Id)
  68. if err != nil {
  69. return err
  70. }
  71. if status != nil {
  72. reply.ClientIP = status.ClientIP
  73. reply.AccessRPCHost = status.AccessRPCHost
  74. reply.HeartbeatInterval = status.HeartbeatInterval
  75. }
  76. return nil
  77. }
  78. func (dm *DeviceManager) SavaFile(args rpcs.ArgsOtaFile, reply *rpcs.ReplyGetOffline) error {
  79. err := dm.otaManager.SavaFile(args.FileId, args.FileData)
  80. if err != nil {
  81. return err
  82. }
  83. return nil
  84. }
  85. func (dm *DeviceManager) GetFile(args rpcs.ArgsOtaFile, reply *rpcs.ReplyOtaFile) error {
  86. file, err := dm.otaManager.GetFile(args.FileId)
  87. if err != nil {
  88. return err
  89. }
  90. if file != nil {
  91. reply.File = file.FileData
  92. }
  93. return nil
  94. }
  95. func (dm *DeviceManager) UpdateProgress(args rpcs.ArgsOtaProgress, reply *rpcs.ReplyGetOffline) error {
  96. err := dm.otaManager.UpdateProgress(args.DeviceId, args.Progress)
  97. if err != nil {
  98. return err
  99. }
  100. return nil
  101. }
  102. func (dm *DeviceManager) GetProgress(args rpcs.ArgsOtaProgress, reply *rpcs.ReplyOtaProgress) error {
  103. progress, err := dm.otaManager.GetProgress(args.DeviceId)
  104. if err != nil {
  105. return err
  106. }
  107. if progress != nil {
  108. reply.Progress = progress.Progress
  109. }
  110. return nil
  111. }
  112. func (dm *DeviceManager) GetDeviceStatus(args rpcs.ArgsGetStatus, reply *rpcs.ReplyStatus) error {
  113. status, err := dm.statusManager.GetDeviceStatus(args.Id, args.ProductId)
  114. if err != nil {
  115. return err
  116. }
  117. if status != "" {
  118. reply.Status = status
  119. }
  120. return nil
  121. }
  122. func (dm *DeviceManager) GetDeviceInfo(args rpcs.ArgsGetStatus, reply *rpcs.ReplayInfo) error {
  123. info, err := dm.statusManager.GetDeviceInfo(args.Id, args.ProductId)
  124. if err != nil {
  125. return err
  126. }
  127. if info != "" {
  128. reply.Info = info
  129. }
  130. return nil
  131. }
  132. func (dm *DeviceManager) GetDeviceStatusByKey(args rpcs.ArgsGetStatus, reply *rpcs.ReplyStatus) error {
  133. status, err := dm.statusManager.GetDeviceStatusByKey(args.Key)
  134. if err != nil {
  135. return err
  136. }
  137. if status != "" {
  138. reply.Status = status
  139. }
  140. return nil
  141. }
  142. func (dm *DeviceManager) SetAlarm(args rpcs.ArgsAlarmInfo, reply *rpcs.ArgsAlarmInfo) error {
  143. return dm.alarmManager.SetAlarm(&deviceAlarm.AlarmParams{
  144. DeviceCode: args.DeviceCode,
  145. FirstReportTime: args.FirstReportTime,
  146. LastAlarmTime: args.LastAlarmTime,
  147. })
  148. }
  149. func (dm *DeviceManager) GetAlarm(args rpcs.ArgsGetAlarm, reply *rpcs.ReplayAlarm) error {
  150. info, err := dm.alarmManager.GetAlarm(args.DeviceCode)
  151. if err != nil {
  152. return err
  153. }
  154. if info != nil {
  155. reply.AlarmParams = info
  156. }
  157. return nil
  158. }
  159. func (dm *DeviceManager) DelAlarm(args rpcs.ArgsGetAlarm, reply *rpcs.ReplayAlarm) error {
  160. return dm.alarmManager.DeleteAlarm(args.DeviceCode)
  161. }
  162. func (dm *DeviceManager) GetAllScene(args rpcs.ArgsScene, reply *rpcs.ReplyScenes) error {
  163. result, err := dm.sceneManager.GetScene(args.Key)
  164. if err != nil {
  165. return err
  166. }
  167. if result != "" {
  168. reply.Result = result
  169. }
  170. return nil
  171. }
  172. func (dm *DeviceManager) SaveScene(args rpcs.ArgsScene, reply *rpcs.ReplyScene) error {
  173. return dm.sceneManager.SaveScene(&scene.Info{
  174. Key: args.Key,
  175. SceneId: args.SceneId,
  176. TaskId: args.TaskId,
  177. Config: args.Config,
  178. })
  179. }
  180. func (dm *DeviceManager) GetScene(args rpcs.ArgsScene, reply *rpcs.ReplyScene) error {
  181. info, err := dm.sceneManager.GetScene(args.Key)
  182. if err != nil {
  183. return err
  184. }
  185. if info != "" {
  186. reply.Config = info
  187. }
  188. return nil
  189. }
  190. func (dm *DeviceManager) DeleteScene(args rpcs.ArgsScene, reply *rpcs.ReplyScene) error {
  191. return dm.sceneManager.DeleteScene(args.Key)
  192. }