diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2022-11-01 06:58:26 +0100 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2022-11-09 13:56:44 +0100 |
| commit | d13fd59f7db6ec7880e09b921f6d7a7732c455e2 (patch) | |
| tree | 4b5d45b91ed2e82cf3a7761a71c7dfa4f07493df | |
| parent | 2af40170885057f6fa6a40ffb071d2b998265a54 (diff) | |
| download | mullvadvpn-d13fd59f7db6ec7880e09b921f6d7a7732c455e2.tar.xz mullvadvpn-d13fd59f7db6ec7880e09b921f6d7a7732c455e2.zip | |
Expose relay selector via interactor
4 files changed, 22 insertions, 14 deletions
diff --git a/ios/MullvadVPN/TunnelManager/ReconnectTunnelOperation.swift b/ios/MullvadVPN/TunnelManager/ReconnectTunnelOperation.swift index fd145e332a..42ed31c941 100644 --- a/ios/MullvadVPN/TunnelManager/ReconnectTunnelOperation.swift +++ b/ios/MullvadVPN/TunnelManager/ReconnectTunnelOperation.swift @@ -36,15 +36,7 @@ class ReconnectTunnelOperation: ResultOperation<Void, Error> { } do { - var selectorResult: RelaySelectorResult? - - if selectNewRelay { - let cachedRelays = try RelayCacheTracker.shared.getCachedRelays() - selectorResult = try RelaySelector.evaluate( - relays: cachedRelays.relays, - constraints: interactor.settings.relayConstraints - ) - } + let selectorResult = selectNewRelay ? try interactor.selectRelay() : nil task = tunnel.reconnectTunnel( relaySelectorResult: selectorResult diff --git a/ios/MullvadVPN/TunnelManager/StartTunnelOperation.swift b/ios/MullvadVPN/TunnelManager/StartTunnelOperation.swift index d646103ce5..e2f9fa1c37 100644 --- a/ios/MullvadVPN/TunnelManager/StartTunnelOperation.swift +++ b/ios/MullvadVPN/TunnelManager/StartTunnelOperation.swift @@ -51,11 +51,7 @@ class StartTunnelOperation: ResultOperation<Void, Error> { case .disconnected, .pendingReconnect: do { - let cachedRelays = try RelayCacheTracker.shared.getCachedRelays() - let selectorResult = try RelaySelector.evaluate( - relays: cachedRelays.relays, - constraints: interactor.settings.relayConstraints - ) + let selectorResult = try interactor.selectRelay() makeTunnelProviderAndStartTunnel(selectorResult: selectorResult) { error in self.finish(completion: OperationCompletion(error: error)) diff --git a/ios/MullvadVPN/TunnelManager/TunnelInteractor.swift b/ios/MullvadVPN/TunnelManager/TunnelInteractor.swift index f4fb16079b..eec47e1863 100644 --- a/ios/MullvadVPN/TunnelManager/TunnelInteractor.swift +++ b/ios/MullvadVPN/TunnelManager/TunnelInteractor.swift @@ -7,6 +7,8 @@ // import Foundation +import RelayCache +import RelaySelector protocol TunnelInteractor { // MARK: - Tunnel manipulation @@ -32,4 +34,5 @@ protocol TunnelInteractor { func startTunnel() func prepareForVPNConfigurationDeletion() + func selectRelay() throws -> RelaySelectorResult } diff --git a/ios/MullvadVPN/TunnelManager/TunnelManager.swift b/ios/MullvadVPN/TunnelManager/TunnelManager.swift index 727c8ecd8f..92d527fcff 100644 --- a/ios/MullvadVPN/TunnelManager/TunnelManager.swift +++ b/ios/MullvadVPN/TunnelManager/TunnelManager.swift @@ -12,6 +12,7 @@ import MullvadREST import MullvadTypes import NetworkExtension import Operations +import RelayCache import RelaySelector import StoreKit import TunnelProviderMessaging @@ -53,6 +54,7 @@ final class TunnelManager: StorePaymentObserver { // MARK: - Internal variables + private let relayCacheTracker: RelayCacheTracker private let accountsProxy: REST.AccountsProxy private let devicesProxy: REST.DevicesProxy @@ -88,6 +90,8 @@ final class TunnelManager: StorePaymentObserver { // MARK: - Initialization private init(accountsProxy: REST.AccountsProxy, devicesProxy: REST.DevicesProxy) { + self.relayCacheTracker = relayCacheTracker + self.relayCacheTracker = .shared self.accountsProxy = accountsProxy self.devicesProxy = devicesProxy self.operationQueue.name = "TunnelManager.operationQueue" @@ -799,6 +803,15 @@ final class TunnelManager: StorePaymentObserver { // MARK: - Private methods + fileprivate func selectRelay() throws -> RelaySelectorResult { + let cachedRelays = try relayCacheTracker.getCachedRelays() + + return try RelaySelector.evaluate( + relays: cachedRelays.relays, + constraints: settings.relayConstraints + ) + } + fileprivate func prepareForVPNConfigurationDeletion() { nslock.lock() defer { nslock.unlock() } @@ -1068,4 +1081,8 @@ private struct TunnelInteractorProxy: TunnelInteractor { func prepareForVPNConfigurationDeletion() { tunnelManager.prepareForVPNConfigurationDeletion() } + + func selectRelay() throws -> RelaySelectorResult { + return try tunnelManager.selectRelay() + } } |
