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

Add health callback wrapper

parent 8bf6dab4
No related branches found
No related tags found
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.
Finish editing this message first!
Please register or to comment