Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unified code for DispatchQoS.QoSClass.description and qos_class_t.description #137

Merged
merged 2 commits into from
May 21, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 35 additions & 22 deletions Sources/Async/Async.swift
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,19 @@ public struct AsyncGroup {
}
}

/**
Each QoSClassDescription's case contains a description for qos_class_t or DispatchQoS.QoSClass cases
*/
private enum QoSClassDescription: String {
case main = "Main"
case userInteractive = "User Interactive"
case userInitiated = "User Initiated"
case `default` = "Default"
case utility = "Utility"
case background = "Background"
case unspecified = "Unspecified"
case unknown = "Unknown"
}

// MARK: - Extension for `qos_class_t`

Expand All @@ -729,18 +742,18 @@ public extension qos_class_t {
Description of the `qos_class_t`. E.g. "Main", "User Interactive", etc. for the given Quality of Service class.
*/
var description: String {
get {
switch self {
case qos_class_main(): return "Main"
case DispatchQoS.QoSClass.userInteractive.rawValue: return "User Interactive"
case DispatchQoS.QoSClass.userInitiated.rawValue: return "User Initiated"
case DispatchQoS.QoSClass.default.rawValue: return "Default"
case DispatchQoS.QoSClass.utility.rawValue: return "Utility"
case DispatchQoS.QoSClass.background.rawValue: return "Background"
case DispatchQoS.QoSClass.unspecified.rawValue: return "Unspecified"
default: return "Unknown"
}
let result: QoSClassDescription
switch self {
case qos_class_main(): result = .main
case DispatchQoS.QoSClass.userInteractive.rawValue: result = .userInteractive
case DispatchQoS.QoSClass.userInitiated.rawValue: result = .userInitiated
case DispatchQoS.QoSClass.default.rawValue: result = .default
case DispatchQoS.QoSClass.utility.rawValue: result = .utility
case DispatchQoS.QoSClass.background.rawValue: result = .background
case DispatchQoS.QoSClass.unspecified.rawValue: result = .unspecified
default: result = .unknown
}
return result.rawValue
}
}

Expand All @@ -753,17 +766,17 @@ public extension qos_class_t {
public extension DispatchQoS.QoSClass {

var description: String {
get {
switch self {
case DispatchQoS.QoSClass(rawValue: qos_class_main())!: return "Main"
case .userInteractive: return "User Interactive"
case .userInitiated: return "User Initiated"
case .default: return "Default"
case .utility: return "Utility"
case .background: return "Background"
case .unspecified: return "Unspecified"
@unknown default: return "Unknown"
}
let result: QoSClassDescription
switch self {
case DispatchQoS.QoSClass(rawValue: qos_class_main())!: result = .main
case .userInteractive: result = .userInteractive
case .userInitiated: result = .userInitiated
case .default: result = .default
case .utility: result = .utility
case .background: result = .background
case .unspecified: result = .unspecified
@unknown default: result = .unknown
}
return result.rawValue
}
}