tunnelkit/TunnelKit/Sources/AppExtension/TunnelKitProvider+Interacti...

76 lines
2.2 KiB
Swift
Raw Normal View History

2018-08-23 08:19:25 +00:00
//
// TunnelKitProvider+Interaction.swift
// TunnelKit
2018-08-23 08:19:25 +00:00
//
// Created by Davide De Rosa on 9/24/17.
// Copyright © 2018 London Trust Media. All rights reserved.
//
import Foundation
extension TunnelKitProvider {
2018-08-23 08:19:25 +00:00
// MARK: Interaction
/// The messages accepted by `TunnelKitProvider`.
2018-08-23 08:19:25 +00:00
public class Message: Equatable {
/// Requests a snapshot of the latest debug log. Returns the log data decoded from UTF-8.
public static let requestLog = Message(0xff)
/// Requests the current bytes count from data channel (if connected).
///
/// Data is 16 bytes: low 8 = received, high 8 = sent.
public static let dataCount = Message(0xfe)
/// The underlying raw message `Data` to forward to the tunnel via IPC.
public let data: Data
private init(_ byte: UInt8) {
data = Data(bytes: [byte])
}
init(_ data: Data) {
self.data = data
}
// MARK: Equatable
/// :nodoc:
public static func ==(lhs: Message, rhs: Message) -> Bool {
return (lhs.data == rhs.data)
}
}
/// The errors raised by `TunnelKitProvider`.
2018-08-23 08:19:25 +00:00
public enum ProviderError: Error {
/// The `TunnelKitProvider.Configuration` provided is incorrect or incomplete.
2018-08-23 08:19:25 +00:00
case configuration(field: String)
/// Credentials are missing or protected (e.g. device locked).
case credentials(field: String)
/// The pseudo-random number generator could not be initialized.
case prngInitialization
/// The TLS certificate could not be serialized.
case certificateSerialization
/// Socket endpoint could not be resolved.
case dnsFailure
/// No more protocols available to try.
case exhaustedProtocols
/// Socket failed to reach active state.
case socketActivity
/// An error occurred at the link level.
case linkError
/// The current network changed (e.g. switched from WiFi to data connection).
case networkChanged
}
}