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

Add BroadcastListener callback

parent c77a1afa
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!18Update Bindings
import Bindings
import XCTestDynamicOverlay
public struct BroadcastListener {
public init(handle: @escaping (Result<BroadcastMessage, NSError>) -> Void) {
self.handle = handle
}
public var handle: (Result<BroadcastMessage, NSError>) -> Void
}
extension BroadcastListener {
public static let unimplemented = BroadcastListener(
handle: XCTUnimplemented("\(Self.self)")
)
}
extension BroadcastListener {
func makeBindingsBroadcastListener() -> BindingsBroadcastListenerProtocol {
class CallbackObject: NSObject, BindingsBroadcastListenerProtocol {
init(_ callback: BroadcastListener) {
self.callback = callback
}
let callback: BroadcastListener
func callback(_ p0: Data?, p1: Error?) {
if let error = p1 {
callback.handle(.failure(error as NSError))
} else if let data = p0 {
do {
callback.handle(.success(try BroadcastMessage.decode(data)))
} catch {
callback.handle(.failure(error as NSError))
}
} else {
fatalError("BindingsBroadcastListener received `nil` data and `nil` error")
}
}
}
return CallbackObject(self)
}
}
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