summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2022-11-01 06:58:26 +0100
committerAndrej Mihajlov <and@mullvad.net>2022-11-09 13:56:44 +0100
commitd13fd59f7db6ec7880e09b921f6d7a7732c455e2 (patch)
tree4b5d45b91ed2e82cf3a7761a71c7dfa4f07493df
parent2af40170885057f6fa6a40ffb071d2b998265a54 (diff)
downloadmullvadvpn-d13fd59f7db6ec7880e09b921f6d7a7732c455e2.tar.xz
mullvadvpn-d13fd59f7db6ec7880e09b921f6d7a7732c455e2.zip
Expose relay selector via interactor
-rw-r--r--ios/MullvadVPN/TunnelManager/ReconnectTunnelOperation.swift10
-rw-r--r--ios/MullvadVPN/TunnelManager/StartTunnelOperation.swift6
-rw-r--r--ios/MullvadVPN/TunnelManager/TunnelInteractor.swift3
-rw-r--r--ios/MullvadVPN/TunnelManager/TunnelManager.swift17
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()
+ }
}