Fixed bugs found for the bitmap mask, JSON reader and wifi wrappers in the library.
This commit is contained in:
@@ -22,23 +22,28 @@ extension Network {
|
||||
WifiStatus(rawValue: UInt32(networkAPI.pointee.getStatus.unsafelyUnwrapped().rawValue)) ?? .notConnected
|
||||
}
|
||||
|
||||
/// `true` connects to the configured access point; `false` turns wifi off before
|
||||
/// the 30 s idle timeout. `completion` (documented for `true` only) gets `nil`
|
||||
/// on success; completions fire in call order.
|
||||
public static func setEnabled(_ enabled: Bool, completion: ((NetError?) -> Void)? = nil) {
|
||||
/// Connects to the access point now. `completion` gets `nil` on success, in call order.
|
||||
public static func enable(completion: ((NetError?) -> Void)? = nil) {
|
||||
if let completion {
|
||||
setEnabledCompletions.append(completion)
|
||||
networkAPI.pointee.setEnabled.unsafelyUnwrapped(enabled, { error in
|
||||
guard !Network.setEnabledCompletions.isEmpty else { return }
|
||||
let completion = Network.setEnabledCompletions.removeFirst()
|
||||
enableCompletions.append(completion)
|
||||
networkAPI.pointee.setEnabled.unsafelyUnwrapped(true, { error in
|
||||
guard !Network.enableCompletions.isEmpty else { return }
|
||||
let completion = Network.enableCompletions.removeFirst()
|
||||
completion(Network.optionalError(error))
|
||||
})
|
||||
} else {
|
||||
networkAPI.pointee.setEnabled.unsafelyUnwrapped(enabled, nil)
|
||||
networkAPI.pointee.setEnabled.unsafelyUnwrapped(true, nil)
|
||||
}
|
||||
}
|
||||
|
||||
nonisolated(unsafe) private static var setEnabledCompletions: [(NetError?) -> Void] = []
|
||||
/// Turns wifi off now, not after the 30 s idle timeout.
|
||||
public static func disable() {
|
||||
// No callback: C documents it for enabling only, and a queued one would take
|
||||
// the next `enable` result.
|
||||
networkAPI.pointee.setEnabled.unsafelyUnwrapped(false, nil)
|
||||
}
|
||||
|
||||
nonisolated(unsafe) private static var enableCompletions: [(NetError?) -> Void] = []
|
||||
|
||||
/// Shared by HTTP and TCP. Retains `completion` until the C callback, which
|
||||
/// fires only for `.ask`.
|
||||
|
||||
Reference in New Issue
Block a user