summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Miller <George@livio.io>2022-08-16 13:30:28 -0400
committerGeorge Miller <George@livio.io>2022-08-16 13:30:28 -0400
commitda55199f6a115dab9bf277465517cb5fd5ed0f34 (patch)
tree75bffd0e923f16eb167efcfb59890fcd54bb5853
parent4e40e17e7d6fd2bb6e753489332bf9ca06cbe823 (diff)
downloadsdl_ios-poc/sdlmanager-send-method-swift-versions.tar.gz
-rw-r--r--SmartDeviceLinkSwift/SDLManagerSwift.swift34
1 files changed, 18 insertions, 16 deletions
diff --git a/SmartDeviceLinkSwift/SDLManagerSwift.swift b/SmartDeviceLinkSwift/SDLManagerSwift.swift
index 3ee228ac7..38a2b677b 100644
--- a/SmartDeviceLinkSwift/SDLManagerSwift.swift
+++ b/SmartDeviceLinkSwift/SDLManagerSwift.swift
@@ -7,28 +7,30 @@
//
import Foundation
-
import SmartDeviceLink
public class SDLManagerSwift {
-
- public class func sendRPC(rpc: SDLRPCMessage) -> Void{
- do {
- try await(SDLManager.send(rpc));
- } catch {
- //my dude, an error has occured
+ @available(iOS 13.0.0, *)
+ //pass in the request.
+ //instead of passing in the response handler, the response handler is done in the continueation, which is called when the internal send returns
+ public class func sendRPCRequest(_ request: SDLRPCRequest, using manager: SDLManager) async throws -> (SDLRPCRequest, SDLRPCResponse){
+ try await withCheckedThrowingContinuation{ continuation in
+ manager.send(request: request) {req, res, err in
+ if let error = err {
+ continuation.resume(throwing: error)
+ } else if let request = req, let response = res {
+ continuation.resume(returning: (request, response))
+ } else {
+ continuation.resume(throwing: SendError.unknownError)
+ }
+ }
}
}
-
- public class func sendRequest(request:SDLRPCRequest){
- sendRequest(request: request, responseHandler: nil)
- }
- public class func sendRequest(request: SDLRPCRequest, responseHandler:handler()->Void){
- SDLManager.send(request: request, responseHandler: responseHandler);
- }
- public class func sendRequest(request: SDLRPCRequest, progressHandler: progressHandler()->Void ,responseHandler:handler()->Void){
- SDLManager.send(request: request, progressHandler: progressHandler responseHandler: responseHandler);
+
+ enum SendError: Error {
+ case unknownError
}
+
}