app_info.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package modelse
  2. import "time"
  3. const (
  4. APP_NAME = "app_name"
  5. APP_ID = "app_id"
  6. AGENT_ID = "agent_id"
  7. INSTANCE_ID = "instance_id"
  8. )
  9. type APP_TYPE int
  10. const (
  11. APP_WAIT APP_TYPE = iota
  12. APP_SUCCESS
  13. APP_UPROBE_ERROR
  14. APP_STACK_ERROR
  15. APP_UNINSTALL
  16. APP_UNINSTALL_ERROR
  17. APP_FUSE
  18. APP_FUSE_ERROR
  19. )
  20. const (
  21. TRACE_STATUS = 200
  22. )
  23. func (s APP_TYPE) Error() APP_TYPE {
  24. switch s {
  25. case APP_UNINSTALL:
  26. return APP_UNINSTALL_ERROR
  27. case APP_FUSE:
  28. return APP_FUSE_ERROR
  29. default:
  30. return APP_UPROBE_ERROR
  31. }
  32. }
  33. func (s APP_TYPE) IsSuccess() bool {
  34. if s == APP_SUCCESS {
  35. return true
  36. }
  37. return false
  38. }
  39. func (s APP_TYPE) IsError() bool {
  40. switch s {
  41. case APP_UNINSTALL_ERROR:
  42. case APP_FUSE_ERROR:
  43. case APP_UPROBE_ERROR:
  44. return true
  45. default:
  46. return false
  47. }
  48. return false
  49. }
  50. func (s APP_TYPE) String() string {
  51. switch s {
  52. case APP_SUCCESS:
  53. return "SUCCESS"
  54. case APP_UPROBE_ERROR:
  55. return "UPROBE ERROR"
  56. case APP_UNINSTALL:
  57. return "UNINSTALL"
  58. case APP_FUSE:
  59. return "FUSE"
  60. default:
  61. return "-"
  62. }
  63. }
  64. type AppInfo struct {
  65. AppName string `json:"app_name"`
  66. AppIdHash INT_HASH_ID `json:"app_id_hash"`
  67. InstanceIdHash INT_HASH_ID `json:"instance_id_hash"`
  68. AgentId int64 `json:"agent_id"`
  69. Sn string `json:"sn"`
  70. Sport int `json:"sport"`
  71. ServiceType string `json:"service_name"`
  72. CodeType CodeType `json:"code_type"`
  73. EBPFProcInfo *EbpfProcInfo `json:"ebpf_proc_info"`
  74. RegisterAt int64 `json:"register_at"`
  75. UpdateAt int64 `json:"update_at"`
  76. PreStatus APP_TYPE `json:"pre_status"`
  77. Status APP_TYPE `json:"status"`
  78. Version string `json:"version"`
  79. GoProcCache ProcOnce `json:"go_proc_cache"`
  80. }
  81. type ProcOnce struct {
  82. StartAddr uint64 `json:"start_addr"`
  83. EndAddr uint64 `json:"end_addr"`
  84. }
  85. func (a *AppInfo) UpdateAtTime() {
  86. a.UpdateAt = time.Now().Unix()
  87. }
  88. func (a *AppInfo) SetAppStatus(status APP_TYPE) {
  89. a.PreStatus = a.Status
  90. a.Status = status
  91. a.UpdateAtTime()
  92. }
  93. func (a *AppInfo) SetAppSuccess() {
  94. if !a.Status.IsSuccess() {
  95. a.SetAppStatus(APP_SUCCESS)
  96. }
  97. }
  98. func (a *AppInfo) SetAppStackError() {
  99. a.SetAppStatus(APP_STACK_ERROR)
  100. }
  101. func (a *AppInfo) AppUninstall() {
  102. a.SetAppStatus(APP_UNINSTALL)
  103. }