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

Add health callback wrapper

parent 8bf6dab4
Branches
Tags
2 merge requests!102Release 1.0.0,!18Update Bindings
......@@ -11,6 +11,7 @@ public struct Cmix {
public var stopNetworkFollower: CmixStopNetworkFollower
public var waitForNetwork: CmixWaitForNetwork
public var registerClientErrorCallback: CmixRegisterClientErrorCallback
public var addHealthCallback: CmixAddHealthCallback
}
extension Cmix {
......@@ -25,7 +26,8 @@ extension Cmix {
startNetworkFollower: .live(bindingsCmix),
stopNetworkFollower: .live(bindingsCmix),
waitForNetwork: .live(bindingsCmix),
registerClientErrorCallback: .live(bindingsCmix)
registerClientErrorCallback: .live(bindingsCmix),
addHealthCallback: .live(bindingsCmix)
)
}
}
......@@ -41,6 +43,7 @@ extension Cmix {
startNetworkFollower: .unimplemented,
stopNetworkFollower: .unimplemented,
waitForNetwork: .unimplemented,
registerClientErrorCallback: .unimplemented
registerClientErrorCallback: .unimplemented,
addHealthCallback: .unimplemented
)
}
import Bindings
import XCTestDynamicOverlay
public struct CmixAddHealthCallback {
public var run: (HealthCallback) -> Cancellable
public func callAsFunction(_ callback: HealthCallback) -> Cancellable {
run(callback)
}
}
extension CmixAddHealthCallback {
public static func live(_ bindingsCmix: BindingsCmix) -> CmixAddHealthCallback {
CmixAddHealthCallback { callback in
let id = bindingsCmix.add(
callback.makeBindingsHealthCallback()
)
return Cancellable {
bindingsCmix.removeHealthCallback(id)
}
}
}
}
extension CmixAddHealthCallback {
public static let unimplemented = CmixAddHealthCallback(
run: XCTUnimplemented("\(Self.self)")
)
}
import Bindings
import XCTestDynamicOverlay
public struct HealthCallback {
public init(handle: @escaping (Bool) -> Void) {
self.handle = handle
}
public var handle: (Bool) -> Void
}
extension HealthCallback {
public static let unimplemented = HealthCallback(
handle: XCTUnimplemented("\(Self.self)")
)
}
extension HealthCallback {
func makeBindingsHealthCallback() -> BindingsNetworkHealthCallbackProtocol {
class Callback: NSObject, BindingsNetworkHealthCallbackProtocol {
init(_ healthCallback: HealthCallback) {
self.healthCallback = healthCallback
}
let healthCallback: HealthCallback
func callback(_ p0: Bool) {
healthCallback.handle(p0)
}
}
return Callback(self)
}
}
//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: BindingsCmix) -> 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