From 32bd6ff32cb6f46c6be8dbaff688c8cc00c1a052 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Thu, 29 Jun 2023 17:46:40 +0200 Subject: [PATCH] feat: added module types to the readers --- Kit/constants.swift | 26 ++++++++++++++++++++++++++ Kit/module/reader.swift | 25 +++++++++---------------- Modules/Battery/main.swift | 4 ++-- Modules/Bluetooth/readers.swift | 2 +- Modules/CPU/main.swift | 8 ++++---- Modules/Clock/main.swift | 2 +- Modules/Disk/main.swift | 4 ++-- Modules/Disk/readers.swift | 2 +- Modules/GPU/main.swift | 2 +- Modules/Net/main.swift | 6 +++--- Modules/RAM/main.swift | 4 ++-- Modules/Sensors/readers.swift | 2 +- 12 files changed, 53 insertions(+), 34 deletions(-) diff --git a/Kit/constants.swift b/Kit/constants.swift index dc9fc1fa..1582dee4 100644 --- a/Kit/constants.swift +++ b/Kit/constants.swift @@ -55,3 +55,29 @@ public struct Constants { public static let defaultProcessIcon = NSWorkspace.shared.icon(forFile: "/bin/bash") } + +public enum ModuleType: Int { + case CPU + case RAM + case GPU + case disk + case sensors + case network + case battery + case bluetooth + case clock + + var rawValue: String { + switch self { + case .CPU: return "CPU" + case .RAM: return "RAM" + case .GPU: return "GPU" + case .disk: return "Disk" + case .sensors: return "Sensors" + case .network: return "Network" + case .battery: return "Battery" + case .bluetooth: return "Bluetooth" + case .clock: return "Clock" + } + } +} diff --git a/Kit/module/reader.swift b/Kit/module/reader.swift index 886a66ac..fce81f55 100644 --- a/Kit/module/reader.swift +++ b/Kit/module/reader.swift @@ -24,7 +24,6 @@ public protocol Reader_p { func terminate() func getValue() -> T - func getHistory() -> [value_t] func start() func pause() @@ -44,11 +43,15 @@ public protocol ReaderInternal_p { func read() } -open class Reader: NSObject, ReaderInternal_p { +open class Reader: NSObject, ReaderInternal_p { public var log: NextLog { - return NextLog.shared.copy(category: "\(String(describing: self))") + NextLog.shared.copy(category: "\(String(describing: self))") } public var value: T? + public var name: String { + String(NSStringFromClass(type(of: self)).split(separator: ".").last ?? "unknown") + } + public var interval: Double? = nil public var defaultInterval: Double = 1 public var optional: Bool = false @@ -75,9 +78,7 @@ open class Reader: NSObject, ReaderInternal_p { } } - private var history: [T]? = [] - - public init(popup: Bool = false) { + public init(_ module: ModuleType, popup: Bool = false) { self.popup = popup super.init() @@ -120,12 +121,8 @@ open class Reader: NSObject, ReaderInternal_p { } self.value = value - if value != nil { - if self.history?.count ?? 0 >= 300 { - self.history!.remove(at: 0) - } - self.history?.append(value!) - self.callbackHandler(value!) + if let value { + self.callbackHandler(value) } } @@ -187,10 +184,6 @@ extension Reader: Reader_p { return self.value as! T } - public func getHistory() -> [T] { - return self.history as! [T] - } - public func lock() { self.locked = true } diff --git a/Modules/Battery/main.swift b/Modules/Battery/main.swift index 0f14a6cd..4c0a74c0 100644 --- a/Modules/Battery/main.swift +++ b/Modules/Battery/main.swift @@ -70,8 +70,8 @@ public class Battery: Module { ) guard self.available else { return } - self.usageReader = UsageReader() - self.processReader = ProcessReader() + self.usageReader = UsageReader(.battery) + self.processReader = ProcessReader(.battery) self.settingsView.callback = { DispatchQueue.global(qos: .background).async { diff --git a/Modules/Bluetooth/readers.swift b/Modules/Bluetooth/readers.swift index 551d221f..a909cea6 100644 --- a/Modules/Bluetooth/readers.swift +++ b/Modules/Bluetooth/readers.swift @@ -41,7 +41,7 @@ internal class DevicesReader: Reader<[BLEDevice]>, CBCentralManagerDelegate, CBP static let batteryCharacteristicsUUID = CBUUID(string: "0x2A19") init() { - super.init() + super.init(.bluetooth) self.manager = CBCentralManager(delegate: self, queue: nil) } diff --git a/Modules/CPU/main.swift b/Modules/CPU/main.swift index dc7efb35..39823f63 100644 --- a/Modules/CPU/main.swift +++ b/Modules/CPU/main.swift @@ -88,10 +88,10 @@ public class CPU: Module { ) guard self.available else { return } - self.loadReader = LoadReader() - self.processReader = ProcessReader() - self.averageReader = AverageReader(popup: true) - self.temperatureReader = TemperatureReader(popup: true) + self.loadReader = LoadReader(.CPU) + self.processReader = ProcessReader(.CPU) + self.averageReader = AverageReader(.CPU, popup: true) + self.temperatureReader = TemperatureReader(.CPU, popup: true) #if arch(x86_64) self.limitReader = LimitReader(popup: true) diff --git a/Modules/Clock/main.swift b/Modules/Clock/main.swift index 23643acc..284a9a20 100644 --- a/Modules/Clock/main.swift +++ b/Modules/Clock/main.swift @@ -49,7 +49,7 @@ public class Clock: Module { private let popupView: Popup = Popup() private let settingsView: Settings = Settings() - private var reader: ClockReader = ClockReader() + private var reader: ClockReader = ClockReader(.clock) private var list: [Clock_t] { if let objects = Store.shared.data(key: "\(Clock.title)_list") { diff --git a/Modules/Disk/main.swift b/Modules/Disk/main.swift index 9e3c5001..a2bb3570 100644 --- a/Modules/Disk/main.swift +++ b/Modules/Disk/main.swift @@ -201,9 +201,9 @@ public class Disk: Module { private let settingsView: Settings = Settings() private let portalView: Portal = Portal() - private var capacityReader: CapacityReader = CapacityReader() + private var capacityReader: CapacityReader = CapacityReader(.disk) private var activityReader: ActivityReader = ActivityReader() - private var processReader: ProcessReader = ProcessReader() + private var processReader: ProcessReader = ProcessReader(.disk) private var selectedDisk: String = "" private var notificationLevelState: Bool = false diff --git a/Modules/Disk/readers.swift b/Modules/Disk/readers.swift index 55d61ddf..5c2fe5d9 100644 --- a/Modules/Disk/readers.swift +++ b/Modules/Disk/readers.swift @@ -177,7 +177,7 @@ internal class ActivityReader: Reader { internal var list: Disks = Disks() init() { - super.init() + super.init(.disk) } override func setup() { diff --git a/Modules/GPU/main.swift b/Modules/GPU/main.swift index 82b3a20c..df421f29 100644 --- a/Modules/GPU/main.swift +++ b/Modules/GPU/main.swift @@ -98,7 +98,7 @@ public class GPU: Module { ) guard self.available else { return } - self.infoReader = InfoReader() + self.infoReader = InfoReader(.GPU) self.selectedGPU = Store.shared.string(key: "\(self.config.name)_gpu", defaultValue: self.selectedGPU) self.infoReader?.callbackHandler = { [unowned self] value in diff --git a/Modules/Net/main.swift b/Modules/Net/main.swift index 1e3de327..cd22427d 100644 --- a/Modules/Net/main.swift +++ b/Modules/Net/main.swift @@ -145,9 +145,9 @@ public class Network: Module { ) guard self.available else { return } - self.usageReader = UsageReader() - self.processReader = ProcessReader() - self.connectivityReader = ConnectivityReader() + self.usageReader = UsageReader(.network) + self.processReader = ProcessReader(.network) + self.connectivityReader = ConnectivityReader(.network) self.settingsView.callbackWhenUpdateNumberOfProcesses = { self.popupView.numberOfProcessesUpdated() diff --git a/Modules/RAM/main.swift b/Modules/RAM/main.swift index 6d5425c1..b117a952 100644 --- a/Modules/RAM/main.swift +++ b/Modules/RAM/main.swift @@ -117,8 +117,8 @@ public class RAM: Module { self.processReader?.setInterval(value) } - self.usageReader = UsageReader() - self.processReader = ProcessReader() + self.usageReader = UsageReader(.RAM) + self.processReader = ProcessReader(.RAM) self.settingsView.callbackWhenUpdateNumberOfProcesses = { self.popupView.numberOfProcessesUpdated() diff --git a/Modules/Sensors/readers.swift b/Modules/Sensors/readers.swift index aa565c14..637f42b0 100644 --- a/Modules/Sensors/readers.swift +++ b/Modules/Sensors/readers.swift @@ -27,7 +27,7 @@ internal class SensorsReader: Reader { init() { self.unknownSensorsState = Store.shared.bool(key: "Sensors_unknown", defaultValue: false) - super.init() + super.init(.sensors) self.list.sensors = self.sensors() }