Skip to content
Snippets Groups Projects
Commit 7f0b4034 authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Add NetworkHealthListener

parent 95d29a63
No related branches found
No related tags found
1 merge request!2Bindings API wrapper
public final class Cancellable {
public init(cancel: @escaping () -> Void) {
self.cancel = cancel
}
deinit {
cancel()
}
public let cancel: () -> Void
}
......@@ -6,6 +6,7 @@ public struct Client {
public var makeIdentity: IdentityMaker
public var connect: ConnectionMaker
public var waitForDelivery: MessageDeliveryWaiter
public var networkHealth: NetworkHealthListener
}
extension Client {
......@@ -15,7 +16,8 @@ extension Client {
waitForNetwork: .live(bindingsClient: bindingsClient),
makeIdentity: .live(bindingsClient: bindingsClient),
connect: .live(bindingsClient: bindingsClient),
waitForDelivery: .live(bindingsClient: bindingsClient)
waitForDelivery: .live(bindingsClient: bindingsClient),
networkHealth: .live(bindingsClient: bindingsClient)
)
}
}
......@@ -27,7 +29,8 @@ extension Client {
waitForNetwork: .failing,
makeIdentity: .failing,
connect: .failing,
waitForDelivery: .failing
waitForDelivery: .failing,
networkHealth: .failing
)
}
#endif
import Bindings
public struct NetworkHealthListener {
public var listen: (@escaping (Bool) -> Void) -> Cancellable
public func callAsFunction(callback: @escaping (Bool) -> Void) -> Cancellable {
listen(callback)
}
}
extension NetworkHealthListener {
public static func live(bindingsClient: BindingsClient) -> NetworkHealthListener {
NetworkHealthListener { callback in
let listener = Listener(onCallback: callback)
let id = bindingsClient.registerNetworkHealthCB(listener)
return Cancellable {
bindingsClient.unregisterNetworkHealthCB(id)
}
}
}
}
private final class Listener: NSObject, BindingsNetworkHealthCallbackProtocol {
init(onCallback: @escaping (Bool) -> Void) {
self.onCallback = onCallback
super.init()
}
let onCallback: (Bool) -> Void
func callback(_ p0: Bool) {
onCallback(p0)
}
}
#if DEBUG
extension NetworkHealthListener {
public static let failing = NetworkHealthListener { _ in
fatalError("Not implemented")
}
}
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment