diff --git a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Bindings b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Bindings index 131f1d78c3fcf2a02582bd922f5392f81d5691eb..9613b0e5c18dd2250df2dd0367f10764cec12927 100644 Binary files a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Bindings and b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Bindings differ diff --git a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Headers/Bindings.objc.h b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Headers/Bindings.objc.h index fd68e56619ed543b72bbf05da1ba2474e119ef12..c5600d7bc966b7b9759d72cc659ae937c5482dc5 100644 --- a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Headers/Bindings.objc.h +++ b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Headers/Bindings.objc.h @@ -67,7 +67,7 @@ Accepts a marshalled Message object - (nonnull instancetype)init; // skipped field AuthenticatedConnection.Connection with unsupported type: gitlab.com/elixxir/client/bindings.Connection -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; - (long)getId; - (NSData* _Nullable)getPartner; - (BOOL)isAuthenticated; @@ -209,7 +209,7 @@ passed timeout. It will return true if the network is healthy /** * Close deletes this Connection's partner.Manager and releases resources */ -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; /** * GetId returns the Connection.id */ diff --git a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Bindings b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Bindings index 131f1d78c3fcf2a02582bd922f5392f81d5691eb..9613b0e5c18dd2250df2dd0367f10764cec12927 100644 Binary files a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Bindings and b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Bindings differ diff --git a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Headers/Bindings.objc.h b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Headers/Bindings.objc.h index fd68e56619ed543b72bbf05da1ba2474e119ef12..c5600d7bc966b7b9759d72cc659ae937c5482dc5 100644 --- a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Headers/Bindings.objc.h +++ b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Headers/Bindings.objc.h @@ -67,7 +67,7 @@ Accepts a marshalled Message object - (nonnull instancetype)init; // skipped field AuthenticatedConnection.Connection with unsupported type: gitlab.com/elixxir/client/bindings.Connection -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; - (long)getId; - (NSData* _Nullable)getPartner; - (BOOL)isAuthenticated; @@ -209,7 +209,7 @@ passed timeout. It will return true if the network is healthy /** * Close deletes this Connection's partner.Manager and releases resources */ -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; /** * GetId returns the Connection.id */ diff --git a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/Current/Bindings b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/Current/Bindings index 131f1d78c3fcf2a02582bd922f5392f81d5691eb..9613b0e5c18dd2250df2dd0367f10764cec12927 100644 Binary files a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/Current/Bindings and b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/Current/Bindings differ diff --git a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/Current/Headers/Bindings.objc.h b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/Current/Headers/Bindings.objc.h index fd68e56619ed543b72bbf05da1ba2474e119ef12..c5600d7bc966b7b9759d72cc659ae937c5482dc5 100644 --- a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/Current/Headers/Bindings.objc.h +++ b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/Current/Headers/Bindings.objc.h @@ -67,7 +67,7 @@ Accepts a marshalled Message object - (nonnull instancetype)init; // skipped field AuthenticatedConnection.Connection with unsupported type: gitlab.com/elixxir/client/bindings.Connection -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; - (long)getId; - (NSData* _Nullable)getPartner; - (BOOL)isAuthenticated; @@ -209,7 +209,7 @@ passed timeout. It will return true if the network is healthy /** * Close deletes this Connection's partner.Manager and releases resources */ -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; /** * GetId returns the Connection.id */ diff --git a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Bindings b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Bindings index f02c6797986c50582c50cb819be74ee33621d8ae..e10e9ee786df8cefcea1b2ea1007c9fdb864f674 100644 Binary files a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Bindings and b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Bindings differ diff --git a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Headers/Bindings.objc.h b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Headers/Bindings.objc.h index fd68e56619ed543b72bbf05da1ba2474e119ef12..c5600d7bc966b7b9759d72cc659ae937c5482dc5 100644 --- a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Headers/Bindings.objc.h +++ b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Headers/Bindings.objc.h @@ -67,7 +67,7 @@ Accepts a marshalled Message object - (nonnull instancetype)init; // skipped field AuthenticatedConnection.Connection with unsupported type: gitlab.com/elixxir/client/bindings.Connection -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; - (long)getId; - (NSData* _Nullable)getPartner; - (BOOL)isAuthenticated; @@ -209,7 +209,7 @@ passed timeout. It will return true if the network is healthy /** * Close deletes this Connection's partner.Manager and releases resources */ -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; /** * GetId returns the Connection.id */ diff --git a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Bindings b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Bindings index f02c6797986c50582c50cb819be74ee33621d8ae..e10e9ee786df8cefcea1b2ea1007c9fdb864f674 100644 Binary files a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Bindings and b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Bindings differ diff --git a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Headers/Bindings.objc.h b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Headers/Bindings.objc.h index fd68e56619ed543b72bbf05da1ba2474e119ef12..c5600d7bc966b7b9759d72cc659ae937c5482dc5 100644 --- a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Headers/Bindings.objc.h +++ b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Headers/Bindings.objc.h @@ -67,7 +67,7 @@ Accepts a marshalled Message object - (nonnull instancetype)init; // skipped field AuthenticatedConnection.Connection with unsupported type: gitlab.com/elixxir/client/bindings.Connection -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; - (long)getId; - (NSData* _Nullable)getPartner; - (BOOL)isAuthenticated; @@ -209,7 +209,7 @@ passed timeout. It will return true if the network is healthy /** * Close deletes this Connection's partner.Manager and releases resources */ -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; /** * GetId returns the Connection.id */ diff --git a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/Current/Bindings b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/Current/Bindings index f02c6797986c50582c50cb819be74ee33621d8ae..e10e9ee786df8cefcea1b2ea1007c9fdb864f674 100644 Binary files a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/Current/Bindings and b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/Current/Bindings differ diff --git a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/Current/Headers/Bindings.objc.h b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/Current/Headers/Bindings.objc.h index fd68e56619ed543b72bbf05da1ba2474e119ef12..c5600d7bc966b7b9759d72cc659ae937c5482dc5 100644 --- a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/Current/Headers/Bindings.objc.h +++ b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/Current/Headers/Bindings.objc.h @@ -67,7 +67,7 @@ Accepts a marshalled Message object - (nonnull instancetype)init; // skipped field AuthenticatedConnection.Connection with unsupported type: gitlab.com/elixxir/client/bindings.Connection -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; - (long)getId; - (NSData* _Nullable)getPartner; - (BOOL)isAuthenticated; @@ -209,7 +209,7 @@ passed timeout. It will return true if the network is healthy /** * Close deletes this Connection's partner.Manager and releases resources */ -- (void)close; +- (BOOL)close:(NSError* _Nullable* _Nullable)error; /** * GetId returns the Connection.id */ diff --git a/README.md b/README.md index abead2fbb13f2e011ce6876c3446066f2016a055..c2bfcb0b57a11bc9d2731e1392bdc21263a7d61f 100644 --- a/README.md +++ b/README.md @@ -172,7 +172,7 @@ ElixxirDAppsSDK [Xcode Workspace] ### Build schemes -- Use `exlixxir-dapps-sdk-swift` scheme to build the package with `ElixxirDAppsSDK` library. +- Use `exlixxir-dapps-sdk-swift` scheme to build and test the package with `ElixxirDAppsSDK` library. - Use `ExampleApp (iOS)` to build and run the example app. - Use `example-app` scheme to build and test the example app package with all contained libraries. - Use `ExampleAppIcon` scheme with macOS target to build and preview the example app icon. diff --git a/Sources/ElixxirDAppsSDK/Cancellable.swift b/Sources/ElixxirDAppsSDK/Cancellable.swift index 1984e3f10916319e9e88959aa7f21f554d0d0e27..f6897f8d9bdb584053947ab08878643d9eab7028 100644 --- a/Sources/ElixxirDAppsSDK/Cancellable.swift +++ b/Sources/ElixxirDAppsSDK/Cancellable.swift @@ -1,11 +1,18 @@ public final class Cancellable { public init(cancel: @escaping () -> Void) { - self.cancel = cancel + self.onCancel = cancel } deinit { cancel() } - public let cancel: () -> Void + public func cancel() { + guard isCancelled == false else { return } + isCancelled = true + onCancel() + } + + private var isCancelled = false + private let onCancel: () -> Void } diff --git a/Sources/ElixxirDAppsSDK/ConnectionCloser.swift b/Sources/ElixxirDAppsSDK/ConnectionCloser.swift index c74c62facc24cdbd70df2c1480dbd4424cf3925c..eb31677de4e3c630a944229503e7f3a70289718d 100644 --- a/Sources/ElixxirDAppsSDK/ConnectionCloser.swift +++ b/Sources/ElixxirDAppsSDK/ConnectionCloser.swift @@ -1,10 +1,10 @@ import Bindings public struct ConnectionCloser { - public var close: () -> Void + public var close: () throws -> Void - public func callAsFunction() { - close() + public func callAsFunction() throws { + try close() } }