mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
feat: added additional wifi events listener that will read the connection details if something was changed (#2292)
This commit is contained in:
@@ -103,7 +103,7 @@ extension CWChannel {
|
||||
}
|
||||
}
|
||||
|
||||
internal class UsageReader: Reader<Network_Usage> {
|
||||
internal class UsageReader: Reader<Network_Usage>, CWEventDelegate {
|
||||
private var reachability: Reachability = Reachability(start: true)
|
||||
private let variablesQueue = DispatchQueue(label: "eu.exelban.NetworkUsageReader")
|
||||
private var _usage: Network_Usage = Network_Usage()
|
||||
@@ -141,6 +141,8 @@ internal class UsageReader: Reader<Network_Usage> {
|
||||
get { Store.shared.bool(key: "Network_VPNMode", defaultValue: false) }
|
||||
}
|
||||
|
||||
private let wifiClient = CWWiFiClient.shared()
|
||||
|
||||
public override func setup() {
|
||||
self.reachability.reachable = {
|
||||
if self.active {
|
||||
@@ -171,10 +173,14 @@ internal class UsageReader: Reader<Network_Usage> {
|
||||
self.usage = usage
|
||||
self.usage.bandwidth = Bandwidth()
|
||||
}
|
||||
|
||||
self.wifiClient.delegate = self
|
||||
self.startListeningForWifiEvents()
|
||||
}
|
||||
|
||||
public override func terminate() {
|
||||
self.reachability.stop()
|
||||
self.stopListeningForWifiEvents()
|
||||
}
|
||||
|
||||
public override func read() {
|
||||
@@ -461,6 +467,26 @@ internal class UsageReader: Reader<Network_Usage> {
|
||||
self.usage.total = Bandwidth()
|
||||
self.save(self.usage)
|
||||
}
|
||||
|
||||
private func startListeningForWifiEvents() {
|
||||
do {
|
||||
try self.wifiClient.startMonitoringEvent(with: .ssidDidChange)
|
||||
} catch let err as NSError {
|
||||
error("failed to start monitoring Wi-Fi events: \(err.localizedDescription)")
|
||||
}
|
||||
}
|
||||
|
||||
private func stopListeningForWifiEvents() {
|
||||
do {
|
||||
try self.wifiClient.stopMonitoringEvent(with: .ssidDidChange)
|
||||
} catch let err as NSError {
|
||||
error("failed to stop monitoring Wi-Fi events: \(err.localizedDescription)")
|
||||
}
|
||||
}
|
||||
|
||||
func ssidDidChangeForWiFiInterface(withName interfaceName: String) {
|
||||
self.getWiFiDetails()
|
||||
}
|
||||
}
|
||||
|
||||
public class ProcessReader: Reader<[Network_Process]> {
|
||||
|
||||
Reference in New Issue
Block a user