package model import ( "fmt" pb "github.com/naiba/nezha/proto" ) const ( _ = iota // MTReportState .. MTReportState ) // State .. type State struct { CPU float64 MemUsed uint64 SwapUsed uint64 DiskUsed uint64 NetInTransfer uint64 NetOutTransfer uint64 NetInSpeed uint64 NetOutSpeed uint64 Uptime uint64 } // PB .. func (s *State) PB() *pb.State { return &pb.State{ Cpu: s.CPU, MemUsed: s.MemUsed, SwapUsed: s.SwapUsed, DiskUsed: s.DiskUsed, NetInTransfer: s.NetInTransfer, NetOutTransfer: s.NetOutTransfer, NetInSpeed: s.NetInSpeed, NetOutSpeed: s.NetOutSpeed, Uptime: s.Uptime, } } // PB2State .. func PB2State(s *pb.State) State { return State{ CPU: s.GetCpu(), MemUsed: s.GetMemUsed(), SwapUsed: s.GetSwapUsed(), DiskUsed: s.GetDiskUsed(), NetInTransfer: s.GetNetInTransfer(), NetOutTransfer: s.GetNetOutTransfer(), NetInSpeed: s.GetNetInSpeed(), NetOutSpeed: s.GetNetOutSpeed(), Uptime: s.GetUptime(), } } // Host .. type Host struct { Platform string PlatformVersion string CPU []string MemTotal uint64 DiskTotal uint64 SwapTotal uint64 Arch string Virtualization string BootTime uint64 IP string `json:"-"` CountryCode string Version string } // PB .. func (h *Host) PB() *pb.Host { return &pb.Host{ Platform: h.Platform, PlatformVersion: h.PlatformVersion, Cpu: h.CPU, MemTotal: h.MemTotal, DiskTotal: h.DiskTotal, SwapTotal: h.SwapTotal, Arch: h.Arch, Virtualization: h.Virtualization, BootTime: h.BootTime, Ip: h.IP, CountryCode: h.CountryCode, Version: h.Version, } } // PB2Host ... func PB2Host(h *pb.Host) Host { cpuCount := make(map[string]int, 0) cpus := h.GetCpu() for _, u := range cpus { cpuCount[u]++ } var distCpu []string for u, num := range cpuCount { distCpu = append(distCpu, fmt.Sprintf("%sx%d", u, num)) } return Host{ Platform: h.GetPlatform(), PlatformVersion: h.GetPlatformVersion(), CPU: distCpu, MemTotal: h.GetMemTotal(), DiskTotal: h.GetDiskTotal(), SwapTotal: h.GetSwapTotal(), Arch: h.GetArch(), Virtualization: h.GetVirtualization(), BootTime: h.GetBootTime(), IP: h.GetIp(), CountryCode: h.GetCountryCode(), Version: h.GetVersion(), } }