MacMonitor CI/CD Pipeline / Build & Test (Intel x86_64) (push) Successful in 1m49s
67 lines
2.6 KiB
Swift
67 lines
2.6 KiB
Swift
import Foundation
|
|
import SwiftUI
|
|
|
|
public struct TelemetrySnapshotRecord {
|
|
public let cpuLoad: Double
|
|
public let memoryUsedPercent: Double
|
|
public let networkInBps: Double
|
|
public let networkOutBps: Double
|
|
public let diskReadBps: Double
|
|
public let diskWriteBps: Double
|
|
public let cpuTemp: Double
|
|
public let systemPowerWatts: Double
|
|
public let timestamp: Date
|
|
|
|
public init(
|
|
cpuLoad: Double = 0.0,
|
|
memoryUsedPercent: Double = 0.0,
|
|
networkInBps: Double = 0.0,
|
|
networkOutBps: Double = 0.0,
|
|
diskReadBps: Double = 0.0,
|
|
diskWriteBps: Double = 0.0,
|
|
cpuTemp: Double = 0.0,
|
|
systemPowerWatts: Double = 0.0,
|
|
timestamp: Date = Date()
|
|
) {
|
|
self.cpuLoad = cpuLoad
|
|
self.memoryUsedPercent = memoryUsedPercent
|
|
self.networkInBps = networkInBps
|
|
self.networkOutBps = networkOutBps
|
|
self.diskReadBps = diskReadBps
|
|
self.diskWriteBps = diskWriteBps
|
|
self.cpuTemp = cpuTemp
|
|
self.systemPowerWatts = systemPowerWatts
|
|
self.timestamp = timestamp
|
|
}
|
|
}
|
|
|
|
@Observable
|
|
public final class TelemetryHistoryStore {
|
|
public static let shared = TelemetryHistoryStore()
|
|
|
|
public let cpuHistory = RollingRingBuffer<Double>(capacity: 60)
|
|
public let memoryHistory = RollingRingBuffer<Double>(capacity: 60)
|
|
public let networkInHistory = RollingRingBuffer<Double>(capacity: 60)
|
|
public let networkOutHistory = RollingRingBuffer<Double>(capacity: 60)
|
|
public let diskReadHistory = RollingRingBuffer<Double>(capacity: 60)
|
|
public let diskWriteHistory = RollingRingBuffer<Double>(capacity: 60)
|
|
public let cpuTempHistory = RollingRingBuffer<Double>(capacity: 60)
|
|
public let powerHistory = RollingRingBuffer<Double>(capacity: 60)
|
|
|
|
public private(set) var sampleCounter: UInt64 = 0
|
|
|
|
public init() {}
|
|
|
|
public func record(snapshot: TelemetrySnapshotRecord) {
|
|
cpuHistory.append(snapshot.cpuLoad, timestamp: snapshot.timestamp)
|
|
memoryHistory.append(snapshot.memoryUsedPercent, timestamp: snapshot.timestamp)
|
|
networkInHistory.append(snapshot.networkInBps, timestamp: snapshot.timestamp)
|
|
networkOutHistory.append(snapshot.networkOutBps, timestamp: snapshot.timestamp)
|
|
diskReadHistory.append(snapshot.diskReadBps, timestamp: snapshot.timestamp)
|
|
diskWriteHistory.append(snapshot.diskWriteBps, timestamp: snapshot.timestamp)
|
|
cpuTempHistory.append(snapshot.cpuTemp, timestamp: snapshot.timestamp)
|
|
powerHistory.append(snapshot.systemPowerWatts, timestamp: snapshot.timestamp)
|
|
sampleCounter &+= 1
|
|
}
|
|
}
|