diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2020-07-21 15:49:24 +0300 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2020-07-22 18:35:43 +0300 |
| commit | c5732199cdeaff5faaa41add81b4354fb0a62fd1 (patch) | |
| tree | 561826fc7ab161d1a3e489eeb76ee20fe2e39613 | |
| parent | a4d112665a93d16eaefc39519a46b82ea599ce7c (diff) | |
| download | mullvadvpn-c5732199cdeaff5faaa41add81b4354fb0a62fd1.tar.xz mullvadvpn-c5732199cdeaff5faaa41add81b4354fb0a62fd1.zip | |
Get rid of AnyEncodable in favor of generic encoding function
| -rw-r--r-- | ios/MullvadVPN.xcodeproj/project.pbxproj | 6 | ||||
| -rw-r--r-- | ios/MullvadVPN/AnyEncodable.swift | 28 | ||||
| -rw-r--r-- | ios/MullvadVPN/SimulatorTunnelProviderHost.swift | 33 | ||||
| -rw-r--r-- | ios/PacketTunnel/PacketTunnelProvider.swift | 40 |
4 files changed, 41 insertions, 66 deletions
diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj index e259a3aef0..ecfc79d03c 100644 --- a/ios/MullvadVPN.xcodeproj/project.pbxproj +++ b/ios/MullvadVPN.xcodeproj/project.pbxproj @@ -39,8 +39,6 @@ 580EE22824B3289300F9D8A1 /* AssociatedValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580EE22724B3289300F9D8A1 /* AssociatedValue.swift */; }; 580EE22924B3289300F9D8A1 /* AssociatedValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580EE22724B3289300F9D8A1 /* AssociatedValue.swift */; }; 5811DE50239014550011EB53 /* NEVPNStatus+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5811DE4F239014550011EB53 /* NEVPNStatus+Debug.swift */; }; - 581C9BF524C7096E0059F0C6 /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 581C9BF424C7096E0059F0C6 /* AnyEncodable.swift */; }; - 581C9BF624C7096E0059F0C6 /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 581C9BF424C7096E0059F0C6 /* AnyEncodable.swift */; }; 581CBCE62296B97300727D7F /* ViewControllerIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 581CBCE52296B97300727D7F /* ViewControllerIdentifier.swift */; }; 581CBCEC2298041B00727D7F /* SettingsAppVersionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 581CBCEB2298041B00727D7F /* SettingsAppVersionCell.swift */; }; 581CBCEE229826FD00727D7F /* StaticTableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 581CBCED229826FD00727D7F /* StaticTableViewDataSource.swift */; }; @@ -244,7 +242,6 @@ 580EE22324B3243100F9D8A1 /* AsyncBlockOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncBlockOperation.swift; sourceTree = "<group>"; }; 580EE22724B3289300F9D8A1 /* AssociatedValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssociatedValue.swift; sourceTree = "<group>"; }; 5811DE4F239014550011EB53 /* NEVPNStatus+Debug.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NEVPNStatus+Debug.swift"; sourceTree = "<group>"; }; - 581C9BF424C7096E0059F0C6 /* AnyEncodable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyEncodable.swift; sourceTree = "<group>"; }; 581CBCE52296B97300727D7F /* ViewControllerIdentifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewControllerIdentifier.swift; sourceTree = "<group>"; }; 581CBCEB2298041B00727D7F /* SettingsAppVersionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAppVersionCell.swift; sourceTree = "<group>"; }; 581CBCED229826FD00727D7F /* StaticTableViewDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StaticTableViewDataSource.swift; sourceTree = "<group>"; }; @@ -556,7 +553,6 @@ 58C6B35322BB87C4003C19AD /* WireguardPrivateKey.swift */, 58F3C098249B978C003E76BE /* x25519.c */, 58F3C097249B978C003E76BE /* x25519.h */, - 581C9BF424C7096E0059F0C6 /* AnyEncodable.swift */, ); path = MullvadVPN; sourceTree = "<group>"; @@ -968,7 +964,6 @@ 58C3A4B222456F1B00340BDB /* AccountInputGroupView.swift in Sources */, 58F840B22464491D0044E708 /* ChainedError.swift in Sources */, 58FAEDFF24533A7000CB0F5B /* KeychainReturn.swift in Sources */, - 581C9BF524C7096E0059F0C6 /* AnyEncodable.swift in Sources */, 580EE20C24B3225F00F9D8A1 /* DelayOperation.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -983,7 +978,6 @@ 580EE21F24B3237F00F9D8A1 /* OutputOperation.swift in Sources */, 580EE20224B321DB00F9D8A1 /* OperationProtocol.swift in Sources */, 58FAEE0224533ABB00CB0F5B /* KeychainMatchLimit.swift in Sources */, - 581C9BF624C7096E0059F0C6 /* AnyEncodable.swift in Sources */, 58FAEE0324533ABE00CB0F5B /* KeychainReturn.swift in Sources */, 58BFA5CD22A7CE1F00A6173D /* ApplicationConfiguration.swift in Sources */, 580EE20724B3222400F9D8A1 /* ExclusivityController.swift in Sources */, diff --git a/ios/MullvadVPN/AnyEncodable.swift b/ios/MullvadVPN/AnyEncodable.swift deleted file mode 100644 index b4b27a1507..0000000000 --- a/ios/MullvadVPN/AnyEncodable.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// AnyEncodable.swift -// MullvadVPN -// -// Created by pronebird on 21/07/2020. -// Copyright © 2020 Mullvad VPN AB. All rights reserved. -// - -import Foundation - -extension Encodable { - fileprivate func encode(to container: inout SingleValueEncodingContainer) throws { - try container.encode(self) - } -} - -struct AnyEncodable: Encodable { - let value: Encodable - - init(_ value: Encodable) { - self.value = value - } - - func encode(to encoder: Encoder) throws { - var container = encoder.singleValueContainer() - try value.encode(to: &container) - } -} diff --git a/ios/MullvadVPN/SimulatorTunnelProviderHost.swift b/ios/MullvadVPN/SimulatorTunnelProviderHost.swift index 3481117f20..5284cd460f 100644 --- a/ios/MullvadVPN/SimulatorTunnelProviderHost.swift +++ b/ios/MullvadVPN/SimulatorTunnelProviderHost.swift @@ -46,26 +46,15 @@ class SimulatorTunnelProviderHost: SimulatorTunnelProviderDelegate { func handleAppMessage(_ messageData: Data, completionHandler: ((Data?) -> Void)?) { DispatchQueue.main.async { - let completeRequest = { (response: AnyEncodable) in - switch PacketTunnelIpcHandler.encodeResponse(response: response) { - case .success(let data): - completionHandler?(data) - - case .failure: - completionHandler?(nil) - } - - } - let result = PacketTunnelIpcHandler.decodeRequest(messageData: messageData) switch result { case .success(let request): switch request { case .reloadTunnelSettings: - return completeRequest(AnyEncodable(true)) + return Self.replyAppMessage(true, completionHandler: completionHandler) case .tunnelInformation: - return completeRequest(AnyEncodable(self.connectionInfo)) + return Self.replyAppMessage(self.connectionInfo, completionHandler: completionHandler) } case .failure: @@ -74,6 +63,24 @@ class SimulatorTunnelProviderHost: SimulatorTunnelProviderDelegate { } } + private static func replyAppMessage<T: Encodable>( + _ result: Result<T, PacketTunnelProviderError>, + completionHandler: ((Data?) -> Void)?) { + let result = result.flatMap { (response) -> Result<Data, PacketTunnelProviderError> in + return PacketTunnelIpcHandler.encodeResponse(response: response) + .mapError { PacketTunnelProviderError.ipcHandler($0) } + } + + switch result { + case .success(let data): + completionHandler?(data) + + case .failure(let error): + error.logChain(log: tunnelProviderLog) + completionHandler?(nil) + } + } + } #endif diff --git a/ios/PacketTunnel/PacketTunnelProvider.swift b/ios/PacketTunnel/PacketTunnelProvider.swift index 5c5da30b15..6feaacc53c 100644 --- a/ios/PacketTunnel/PacketTunnelProvider.swift +++ b/ios/PacketTunnel/PacketTunnelProvider.swift @@ -180,22 +180,6 @@ class PacketTunnelProvider: NEPacketTunnelProvider { override func handleAppMessage(_ messageData: Data, completionHandler: ((Data?) -> Void)?) { dispatchQueue.async { - let finishWithResult = { (result: Result<AnyEncodable, PacketTunnelProviderError>) in - let result = result.flatMap { (response) -> Result<Data, PacketTunnelProviderError> in - return PacketTunnelIpcHandler.encodeResponse(response: response) - .mapError { PacketTunnelProviderError.ipcHandler($0) } - } - - switch result { - case .success(let data): - completionHandler?(data) - - case .failure(let error): - error.logChain(log: tunnelProviderLog) - completionHandler?(nil) - } - } - let decodeResult = PacketTunnelIpcHandler.decodeRequest(messageData: messageData) .mapError { PacketTunnelProviderError.ipcHandler($0) } @@ -204,15 +188,15 @@ class PacketTunnelProvider: NEPacketTunnelProvider { switch request { case .reloadTunnelSettings: self.reloadTunnelSettings { (result) in - finishWithResult(result.map { AnyEncodable(true) }) + Self.replyAppMessage(result.map { true }, completionHandler: completionHandler) } case .tunnelInformation: - finishWithResult(.success(AnyEncodable(self.connectionInfo))) + Self.replyAppMessage(.success(self.connectionInfo), completionHandler: completionHandler) } case .failure(let error): - finishWithResult(.failure(error)) + Self.replyAppMessage(Result<String, PacketTunnelProviderError>.failure(error), completionHandler: completionHandler) } } } @@ -353,6 +337,24 @@ class PacketTunnelProvider: NEPacketTunnelProvider { } } + private static func replyAppMessage<T: Encodable>( + _ result: Result<T, PacketTunnelProviderError>, + completionHandler: ((Data?) -> Void)?) { + let result = result.flatMap { (response) -> Result<Data, PacketTunnelProviderError> in + return PacketTunnelIpcHandler.encodeResponse(response: response) + .mapError { PacketTunnelProviderError.ipcHandler($0) } + } + + switch result { + case .success(let data): + completionHandler?(data) + + case .failure(let error): + error.logChain(log: tunnelProviderLog) + completionHandler?(nil) + } + } + private func setTunnelConnectionInfo(selectorResult: RelaySelectorResult) { self.connectionInfo = TunnelConnectionInfo( ipv4Relay: selectorResult.endpoint.ipv4Relay, |
