mirror of
https://github.com/realm/SwiftLint.git
synced 2026-06-06 20:18:40 +00:00
34 lines
1.0 KiB
Swift
34 lines
1.0 KiB
Swift
#if !os(Linux)
|
|
import Network
|
|
#endif
|
|
|
|
/// Helper enum providing the static var `connectivityStatus`
|
|
enum Reachability {
|
|
enum ConnectivityStatus {
|
|
case connected, disconnected, unknown
|
|
}
|
|
|
|
/// Returns whether the device is connected to a network, if known.
|
|
/// On Linux, this always evaluates to `nil`.
|
|
static var connectivityStatus: ConnectivityStatus {
|
|
get async {
|
|
#if os(Linux)
|
|
return .unknown
|
|
#else
|
|
return await withCheckedContinuation { continuation in
|
|
let monitor = NWPathMonitor()
|
|
let queue = DispatchQueue.global(qos: .background)
|
|
monitor.pathUpdateHandler = { path in
|
|
if path.status == .satisfied {
|
|
continuation.resume(returning: .connected)
|
|
} else {
|
|
continuation.resume(returning: .disconnected)
|
|
}
|
|
}
|
|
monitor.start(queue: queue)
|
|
}
|
|
#endif
|
|
}
|
|
}
|
|
}
|