]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
WireguardApp: Add async variant of modify tunnel function
authorAlessio Nossa <alessio.nossa@gmail.com>
Tue, 11 Apr 2023 16:46:35 +0000 (18:46 +0200)
committerAlessio Nossa <alessio.nossa@gmail.com>
Tue, 11 Apr 2023 22:44:02 +0000 (00:44 +0200)
Signed-off-by: Alessio Nossa <alessio.nossa@gmail.com>
Sources/WireGuardApp/Tunnel/TunnelsManager.swift

index 7751e545792312f14d59cd86f2bfb681355d9592..44718594ae377770dd1249473a6047181edc14de 100644 (file)
@@ -206,6 +206,7 @@ class TunnelsManager {
         }
     }
 
+    @available(*, renamed: "modify(tunnel:tunnelConfiguration:onDemandOption:shouldEnsureOnDemandEnabled:)")
     func modify(tunnel: TunnelContainer, tunnelConfiguration: TunnelConfiguration,
                 onDemandOption: ActivateOnDemandOption,
                 shouldEnsureOnDemandEnabled: Bool = false,
@@ -299,6 +300,22 @@ class TunnelsManager {
         }
     }
 
+    @available(iOS 13.0, macOS 10.15.0, *)
+    func modify(tunnel: TunnelContainer, tunnelConfiguration: TunnelConfiguration,
+                onDemandOption: ActivateOnDemandOption,
+                shouldEnsureOnDemandEnabled: Bool = false) async throws {
+        return try await withCheckedThrowingContinuation { continuation in
+            modify(tunnel: tunnel, tunnelConfiguration: tunnelConfiguration, onDemandOption: onDemandOption, shouldEnsureOnDemandEnabled: shouldEnsureOnDemandEnabled) { error in
+                if let error = error {
+                    continuation.resume(throwing: error)
+                    return
+                }
+
+                continuation.resume(returning: ())
+            }
+        }
+    }
+
     func remove(tunnel: TunnelContainer, completionHandler: @escaping (TunnelsManagerError?) -> Void) {
         let tunnelProviderManager = tunnel.tunnelProvider
         #if os(macOS)