diff options
author | Roopesh Chander <roop@roopc.net> | 2018-12-06 16:30:11 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2018-12-07 12:36:19 +0530 |
commit | 782dd2ea4e4143c8aa78f314cb9a20bbc743b99c (patch) | |
tree | 74c0ac40345073a81d2d881acedfec0ba913b864 /WireGuard/WireGuard | |
parent | Error handling: Introduce a WireGuardAppError protocol to manage errors (diff) | |
download | wireguard-apple-782dd2ea4e4143c8aa78f314cb9a20bbc743b99c.tar.xz wireguard-apple-782dd2ea4e4143c8aa78f314cb9a20bbc743b99c.zip |
Error handling: Introduce a WireGuardResult type to handle errors in callbacks across the app
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to 'WireGuard/WireGuard')
-rw-r--r-- | WireGuard/WireGuard/VPN/TunnelsManager.swift | 30 | ||||
-rw-r--r-- | WireGuard/WireGuard/WireGuardResult.swift | 28 |
2 files changed, 30 insertions, 28 deletions
diff --git a/WireGuard/WireGuard/VPN/TunnelsManager.swift b/WireGuard/WireGuard/VPN/TunnelsManager.swift index 03d1a45..4aada0c 100644 --- a/WireGuard/WireGuard/VPN/TunnelsManager.swift +++ b/WireGuard/WireGuard/VPN/TunnelsManager.swift @@ -55,32 +55,6 @@ enum TunnelsManagerError: WireGuardAppError { } } -enum TunnelsManagerResult<T> { - case success(T) - case failure(TunnelsManagerError) - - var value: T? { - switch (self) { - case .success(let v): return v - case .failure(_): return nil - } - } - - var error: TunnelsManagerError? { - switch (self) { - case .success(_): return nil - case .failure(let e): return e - } - } - - var isSuccess: Bool { - switch (self) { - case .success(_): return true - case .failure(_): return false - } - } -} - class TunnelsManager { private var tunnels: [TunnelContainer] @@ -95,7 +69,7 @@ class TunnelsManager { self.tunnels = tunnelProviders.map { TunnelContainer(tunnel: $0) }.sorted { $0.name < $1.name } } - static func create(completionHandler: @escaping (TunnelsManagerResult<TunnelsManager>) -> Void) { + static func create(completionHandler: @escaping (WireGuardResult<TunnelsManager>) -> Void) { #if targetEnvironment(simulator) // NETunnelProviderManager APIs don't work on the simulator completionHandler(.success(TunnelsManager(tunnelProviders: []))) @@ -113,7 +87,7 @@ class TunnelsManager { func add(tunnelConfiguration: TunnelConfiguration, activateOnDemandSetting: ActivateOnDemandSetting = ActivateOnDemandSetting.defaultSetting, - completionHandler: @escaping (TunnelsManagerResult<TunnelContainer>) -> Void) { + completionHandler: @escaping (WireGuardResult<TunnelContainer>) -> Void) { let tunnelName = tunnelConfiguration.interface.name if tunnelName.isEmpty { completionHandler(.failure(TunnelsManagerError.tunnelNameEmpty)) diff --git a/WireGuard/WireGuard/WireGuardResult.swift b/WireGuard/WireGuard/WireGuardResult.swift new file mode 100644 index 0000000..93fc4c2 --- /dev/null +++ b/WireGuard/WireGuard/WireGuardResult.swift @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT +// Copyright © 2018 WireGuard LLC. All Rights Reserved. + +enum WireGuardResult<T> { + case success(T) + case failure(WireGuardAppError) + + var value: T? { + switch (self) { + case .success(let v): return v + case .failure(_): return nil + } + } + + var error: WireGuardAppError? { + switch (self) { + case .success(_): return nil + case .failure(let e): return e + } + } + + var isSuccess: Bool { + switch (self) { + case .success(_): return true + case .failure(_): return false + } + } +} |