manager.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package main
  2. import (
  3. "fmt"
  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. }
  16. func NewDeviceManager(redishost string, port, db int) *DeviceManager {
  17. mgr := online.NewManager(redishost, port, db)
  18. helper := token.NewHelper(redishost, port, db)
  19. otaMgr := otaUpgrade.NewOtaManager(redishost, port, db)
  20. statusMgr := deviceStatus.NewDevStatusManager(redishost, port)
  21. return &DeviceManager{
  22. onlineManager: mgr,
  23. tokenHelper: helper,
  24. otaManager: otaMgr,
  25. statusManager: statusMgr,
  26. }
  27. }
  28. func (dm *DeviceManager) GenerateDeviceAccessToken(args rpcs.ArgsGenerateDeviceAccessToken, reply *rpcs.ReplyGenerateDeviceAccessToken) error {
  29. token, err := dm.tokenHelper.GenerateToken(args.Id)
  30. if err != nil {
  31. return err
  32. }
  33. reply.AccessToken = token
  34. return nil
  35. }
  36. func (dm *DeviceManager) ValidateDeviceAccessToken(args rpcs.ArgsValidateDeviceAccessToken, reply *rpcs.ReplyValidateDeviceAccessToken) error {
  37. return dm.tokenHelper.ValidateToken(args.Id, args.AccessToken)
  38. }
  39. func (dm *DeviceManager) GetOnline(args rpcs.ArgsGetOnline, reply *rpcs.ReplyGetOnline) error {
  40. return dm.onlineManager.GetOnline(args.Id, online.Status{
  41. ClientIP: args.ClientIP,
  42. AccessRPCHost: args.AccessRPCHost,
  43. HeartbeatInterval: args.HeartbeatInterval,
  44. })
  45. }
  46. func (dm *DeviceManager) GetOnlineV2(args rpcs.ArgsGetOnline, reply *rpcs.ReplyGetOnline) error {
  47. return dm.onlineManager.GetOnlineV2(args.Id, online.Status{
  48. ClientIP: args.ClientIP,
  49. AccessRPCHost: args.AccessRPCHost,
  50. HeartbeatInterval: args.HeartbeatInterval,
  51. })
  52. }
  53. func (dm *DeviceManager) HeartBeat(args rpcs.ArgsHeartBeat, reply *rpcs.ReplyHeartBeat) error {
  54. return dm.onlineManager.SetHeartbeat(args.Id)
  55. }
  56. func (dm *DeviceManager) GetOffline(args rpcs.ArgsGetOffline, reply *rpcs.ReplyGetOffline) error {
  57. return dm.onlineManager.GetOffline(args.Id)
  58. }
  59. func (dm *DeviceManager) GetDeviceOnlineStatus(args rpcs.ArgsGetDeviceOnlineStatus, reply *rpcs.ReplyGetDeviceOnlineStatus) error {
  60. status, err := dm.onlineManager.GetStatus(args.Id)
  61. if err != nil {
  62. return err
  63. }
  64. if status != nil {
  65. reply.ClientIP = status.ClientIP
  66. reply.AccessRPCHost = status.AccessRPCHost
  67. reply.HeartbeatInterval = status.HeartbeatInterval
  68. }
  69. return nil
  70. }
  71. func (dm *DeviceManager) SavaFile(args rpcs.ArgsOtaFile, reply *rpcs.ReplyGetOffline) error {
  72. err := dm.otaManager.SavaFile(args.FileId, args.FileData)
  73. if err != nil {
  74. return err
  75. }
  76. return nil
  77. }
  78. func (dm *DeviceManager) GetFile(args rpcs.ArgsOtaFile, reply *rpcs.ReplyOtaFile) error {
  79. file, err := dm.otaManager.GetFile(args.FileId)
  80. if err != nil {
  81. return err
  82. }
  83. if file != nil {
  84. reply.File = file.FileData
  85. }
  86. return nil
  87. }
  88. func (dm *DeviceManager) UpdateProgress(args rpcs.ArgsOtaProgress, reply *rpcs.ReplyGetOffline) error {
  89. err := dm.otaManager.UpdateProgress(args.DeviceId, args.Progress)
  90. if err != nil {
  91. return err
  92. }
  93. return nil
  94. }
  95. func (dm *DeviceManager) GetProgress(args rpcs.ArgsOtaProgress, reply *rpcs.ReplyOtaProgress) error {
  96. progress, err := dm.otaManager.GetProgress(args.DeviceId)
  97. if err != nil {
  98. return err
  99. }
  100. if progress != nil {
  101. reply.Progress = progress.Progress
  102. }
  103. return nil
  104. }
  105. func (dm *DeviceManager) GetDeviceStatus(args rpcs.ArgsGetStatus, reply *rpcs.ReplyStatus) error {
  106. status, err := dm.statusManager.GetDeviceStatus(args.Id)
  107. fmt.Printf("status:----------------%v:", status)
  108. if err != nil {
  109. return err
  110. }
  111. if status != nil {
  112. reply.Status = *status
  113. }
  114. return nil
  115. }