From a0cd99104d005690900fa1dfe0d97200c9c7cdfa Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Wed, 31 Aug 2022 01:34:52 +0100 Subject: [PATCH] Add TrackServicesCallback --- .../Callbacks/TrackServicesCallback.swift | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Sources/XXClient/Callbacks/TrackServicesCallback.swift diff --git a/Sources/XXClient/Callbacks/TrackServicesCallback.swift b/Sources/XXClient/Callbacks/TrackServicesCallback.swift new file mode 100644 index 00000000..df3043bb --- /dev/null +++ b/Sources/XXClient/Callbacks/TrackServicesCallback.swift @@ -0,0 +1,42 @@ +import Bindings +import XCTestDynamicOverlay + +public struct TrackServicesCallback { + public init(handle: @escaping (Result<Data, Error>) -> Void) { + self.handle = handle + } + + public var handle: (Result<Data, Error>) -> Void +} + +extension TrackServicesCallback { + public static let unimplemented = HealthCallback( + handle: XCTUnimplemented("\(Self.self)") + ) +} + +extension TrackServicesCallback { + func makeBindingsHealthCallback() -> BindingsTrackServicesCallbackProtocol { + class CallbackObject: NSObject, BindingsTrackServicesCallbackProtocol { + init(_ callback: TrackServicesCallback) { + self.callback = callback + } + + let callback: TrackServicesCallback + + func callback(_ marshalData: Data?, err: Error?) { + if let err = err { + callback.handle(.failure(err)) + return + } + if let marshalData = marshalData { + callback.handle(.success(marshalData)) + return + } + fatalError("BindingsTrackServicesCallback received nil marshalData and err") + } + } + + return CallbackObject(self) + } +} -- GitLab