package model import ( pb "github.com/naiba/nezha/proto" ) const ( _ = iota MTReportHostState ) type SensorTemperature struct { Name string Temperature float64 } type HostState struct { CPU float64 MemUsed uint64 SwapUsed uint64 DiskUsed uint64 NetInTransfer uint64 NetOutTransfer uint64 NetInSpeed uint64 NetOutSpeed uint64 Uptime uint64 Load1 float64 Load5 float64 Load15 float64 TcpConnCount uint64 UdpConnCount uint64 ProcessCount uint64 Temperatures []SensorTemperature } func (s *HostState) PB() *pb.State { var ts []*pb.State_SensorTemperature for _, t := range s.Temperatures { ts = append(ts, &pb.State_SensorTemperature{ Name: t.Name, Temperature: t.Temperature, }) } 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, Load1: s.Load1, Load5: s.Load5, Load15: s.Load15, TcpConnCount: s.TcpConnCount, UdpConnCount: s.UdpConnCount, ProcessCount: s.ProcessCount, Temperatures: ts, } } func PB2State(s *pb.State) HostState { var ts []SensorTemperature for _, t := range s.GetTemperatures() { ts = append(ts, SensorTemperature{ Name: t.GetName(), Temperature: t.GetTemperature(), }) } return HostState{ 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(), Load1: s.GetLoad1(), Load5: s.GetLoad5(), Load15: s.GetLoad15(), TcpConnCount: s.GetTcpConnCount(), UdpConnCount: s.GetUdpConnCount(), ProcessCount: s.GetProcessCount(), Temperatures: ts, } } 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 } 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, } } func PB2Host(h *pb.Host) Host { return Host{ Platform: h.GetPlatform(), PlatformVersion: h.GetPlatformVersion(), CPU: h.GetCpu(), 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(), } }