ReachabilityManager.swift 848 B

123456789101112131415161718192021222324252627
  1. import Foundation
  2. typealias ReachabilityStatus = NetworkReachabilityManager.NetworkReachabilityStatus
  3. typealias Listener = NetworkReachabilityManager.Listener
  4. protocol ReachabilityManager: AnyObject {
  5. var status: ReachabilityStatus { get }
  6. var isReachable: Bool { get }
  7. func startListening(onQueue: DispatchQueue, onUpdatePerforming: @escaping Listener) -> Bool
  8. func stopListening()
  9. }
  10. extension NetworkReachabilityManager: ReachabilityManager {}
  11. extension ReachabilityStatus: CustomStringConvertible {
  12. public var description: String {
  13. switch self {
  14. case .unknown:
  15. return "unknown"
  16. case .notReachable:
  17. return "NOT reachable"
  18. case let .reachable(connectionType):
  19. return "reachable by " + (connectionType == .cellular ? "Cellular" : "WiFi")
  20. }
  21. }
  22. }