proto.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package main
  2. import (
  3. "context"
  4. "google.golang.org/grpc"
  5. client "iaun.cn/linux/services/client"
  6. "time"
  7. )
  8. func getCtx() (context.Context, context.CancelFunc) {
  9. return context.WithTimeout(context.Background(), 1*time.Second)
  10. }
  11. func newConn(addr string, ctx context.Context) (*grpc.ClientConn, error) {
  12. return grpc.DialContext(ctx, addr, grpc.WithBlock(), grpc.WithInsecure())
  13. }
  14. func newClient(conn *grpc.ClientConn) client.ClientClient {
  15. return client.NewClientClient(conn)
  16. }
  17. /*
  18. ctx, cancel := getCtx()
  19. defer cancel()
  20. conn, err := newConn(addr, ctx)
  21. if err != nil {
  22. return 0, err.Error()
  23. }
  24. defer func() { _ = conn.Close() }()
  25. c := newClient(conn)
  26. */
  27. func sendInit(addr string, server *client.Server) (success int32, msg string) {
  28. cpus, err := getCPU()
  29. if err != nil {
  30. return 0, err.Error()
  31. }
  32. cpu := make([]*client.CPUInit, len(*cpus))
  33. for k, v := range *cpus {
  34. cpu[k] = new(client.CPUInit)
  35. cpu[k].Name = v.ModelName
  36. cpu[k].Count = v.Cores
  37. cpu[k].Mhz = v.Mhz
  38. cpu[k].CacheSize = v.CacheSize
  39. }
  40. ctx, cancel := getCtx()
  41. defer cancel()
  42. conn, err := newConn(addr, ctx)
  43. if err != nil {
  44. return 0, err.Error()
  45. }
  46. defer func() { _ = conn.Close() }()
  47. c := newClient(conn)
  48. ctx1, cancel1 := getCtx()
  49. defer cancel1()
  50. r, err := c.Init(ctx1, &client.InitReq{Server: server, CPU: cpu})
  51. if err != nil {
  52. return 0, err.Error()
  53. }
  54. return r.Success, r.Msg
  55. }
  56. func sendMemory(addr string, server *client.Server) (success int32, msg string) {
  57. mem, err := getMem()
  58. if err != nil {
  59. return 0, err.Error()
  60. }
  61. ctx, cancel := getCtx()
  62. defer cancel()
  63. conn, err := newConn(addr, ctx)
  64. if err != nil {
  65. return 0, err.Error()
  66. }
  67. defer func() { _ = conn.Close() }()
  68. c := newClient(conn)
  69. memInfo := new(client.MemoryReq)
  70. memInfo.Server = server
  71. memInfo.Total = mem.Total
  72. memInfo.Free = mem.Free
  73. memInfo.Used = mem.Used
  74. memInfo.Cached = mem.Cached
  75. memInfo.UsedPercent = mem.UsedPercent
  76. ctx1, cancel1 := getCtx()
  77. defer cancel1()
  78. r, err := c.Memory(ctx1, memInfo)
  79. if err != nil {
  80. return 0, err.Error()
  81. }
  82. return r.Success, r.Msg
  83. }
  84. func sendNetIO(addr string, server *client.Server) (success int32, msg string) {
  85. net, err := getNetIO()
  86. if err != nil {
  87. return 0, err.Error()
  88. }
  89. ctx, cancel := getCtx()
  90. defer cancel()
  91. conn, err := newConn(addr, ctx)
  92. if err != nil {
  93. return 0, err.Error()
  94. }
  95. defer func() { _ = conn.Close() }()
  96. c := newClient(conn)
  97. ctx1, cancel1 := getCtx()
  98. defer cancel1()
  99. netInfo := new(client.NetReq)
  100. netInfo.Server = server
  101. netInfo.BytesRecv = net.BytesRecv
  102. netInfo.BytesSent = net.BytesSent
  103. netInfo.PacketsRecv = net.PacketsRecv
  104. netInfo.PacketsSent = net.PacketsSent
  105. r, err := c.Network(ctx1, netInfo)
  106. if err != nil {
  107. return 0, err.Error()
  108. }
  109. return r.Success, r.Msg
  110. }
  111. func sendCPUPercent(addr string, server *client.Server) (success int32, msg string) {
  112. percent, err := getCPUPercent()
  113. if err != nil {
  114. return 0, err.Error()
  115. }
  116. req := new(client.CPUReq)
  117. req.Server = server
  118. req.Percent = percent
  119. ctx, cancel := getCtx()
  120. defer cancel()
  121. conn, err := newConn(addr, ctx)
  122. if err != nil {
  123. return 0, err.Error()
  124. }
  125. defer func() { _ = conn.Close() }()
  126. c := newClient(conn)
  127. ctx1, cancel1 := getCtx()
  128. defer cancel1()
  129. r, err := c.CPUPercent(ctx1, req)
  130. if err != nil {
  131. return 0, err.Error()
  132. }
  133. return r.Success, r.Msg
  134. }
  135. func sendDisk(addr string, server *client.Server) (success int32, msg string) {
  136. //TODO
  137. return 1, ""
  138. }