Files
sing-box-extended-mirror/service/powerreport/record.go
T
2026-08-30 17:41:46 +08:00

95 lines
3.4 KiB
Go

package powerreport
type Direction uint8
const (
DirectionOutbound Direction = iota
DirectionInbound
)
func (d Direction) String() string {
if d == DirectionInbound {
return "in"
}
return "out"
}
type Attribution struct {
Inbound string `json:"inbound,omitempty"`
Domain string `json:"domain,omitempty"`
Destination string `json:"destination,omitempty"`
Outbound string `json:"outbound,omitempty"`
Endpoint string `json:"endpoint,omitempty"`
}
type timelineRow struct {
From string `json:"from"`
To string `json:"to"`
CPUUserMS int64 `json:"cpuUserMS,omitempty"`
CPUSystemMS int64 `json:"cpuSystemMS,omitempty"`
CPUPerformanceMS int64 `json:"cpuPerformanceMS,omitempty"`
CPUGCMS int64 `json:"cpuGCMS,omitempty"`
QoSMS *qosBreakdown `json:"qosMS,omitempty"`
PackageIdleWakeups uint64 `json:"packageIdleWakeups,omitempty"`
InterruptWakeups uint64 `json:"interruptWakeups,omitempty"`
EnergyNanojoules uint64 `json:"energyNJ,omitempty"`
PerformanceEnergyNanojoules uint64 `json:"performanceEnergyNJ,omitempty"`
DiskBytesWritten uint64 `json:"diskWriteBytes,omitempty"`
SleptMS int64 `json:"sleptMS,omitempty"`
Goroutines uint64 `json:"goroutines,omitempty"`
DNSQueries uint64 `json:"dnsQueries,omitempty"`
ConnectionsOpened uint64 `json:"connectionsOpened,omitempty"`
InterfacePackets map[string]uint64 `json:"interfacePackets,omitempty"`
NetworkType string `json:"network,omitempty"`
}
type qosBreakdown struct {
DefaultMS int64 `json:"default,omitempty"`
MaintenanceMS int64 `json:"maintenance,omitempty"`
BackgroundMS int64 `json:"background,omitempty"`
UtilityMS int64 `json:"utility,omitempty"`
LegacyMS int64 `json:"legacy,omitempty"`
UserInitiatedMS int64 `json:"userInitiated,omitempty"`
UserInteractiveMS int64 `json:"userInteractive,omitempty"`
}
const (
eventTypeBreak = "break"
eventTypeNetwork = "network"
)
type eventRecord struct {
Type string `json:"t"`
At string `json:"at"`
IdleMS int64 `json:"idleMS,omitempty"`
Direction string `json:"direction,omitempty"`
Size int `json:"size,omitempty"`
NetworkType string `json:"network,omitempty"`
By *Attribution `json:"by,omitempty"`
}
type systemUsage struct {
valid bool
userTime int64
systemTime int64
performanceUserTime int64
performanceSystemTime int64
qosDefaultTime int64
qosMaintenanceTime int64
qosBackgroundTime int64
qosUtilityTime int64
qosLegacyTime int64
qosUserInitiatedTime int64
qosUserInteractiveTime int64
packageIdleWakeups uint64
interruptWakeups uint64
diskBytesWritten uint64
energyNanojoules uint64
performanceEnergyNanojoules uint64
}
type interfaceCounters struct {
inPackets uint32
outPackets uint32
}