From 5e0a230e78f45412e8b9881ffa54e96f7b16c34d Mon Sep 17 00:00:00 2001 From: yury Date: Wed, 6 Jan 2016 15:11:02 +0300 Subject: [PATCH] DRY DispatchQueueSchedulerQOS --- .../ConcurrentDispatchQueueScheduler.swift | 14 +------------- RxSwift/Schedulers/DispatchQueueSchedulerQOS.swift | 14 ++++++++++++++ .../Schedulers/SerialDispatchQueueScheduler.swift | 14 +------------- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift b/RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift index 2494d3af..3e2ce2f0 100644 --- a/RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift +++ b/RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift @@ -44,19 +44,7 @@ public class ConcurrentDispatchQueueScheduler: SchedulerType { */ @available(iOS 8, OSX 10.10, *) public convenience init(globalConcurrentQueueQOS: DispatchQueueSchedulerQOS) { - let priority: qos_class_t - switch globalConcurrentQueueQOS { - case .UserInteractive: - priority = QOS_CLASS_USER_INTERACTIVE - case .UserInitiated: - priority = QOS_CLASS_USER_INITIATED - case .Default: - priority = QOS_CLASS_DEFAULT - case .Utility: - priority = QOS_CLASS_UTILITY - case .Background: - priority = QOS_CLASS_BACKGROUND - } + let priority = globalConcurrentQueueQOS.QOSClass self.init(queue: dispatch_get_global_queue(priority, UInt(0))) } diff --git a/RxSwift/Schedulers/DispatchQueueSchedulerQOS.swift b/RxSwift/Schedulers/DispatchQueueSchedulerQOS.swift index e9224acf..571f6bf9 100644 --- a/RxSwift/Schedulers/DispatchQueueSchedulerQOS.swift +++ b/RxSwift/Schedulers/DispatchQueueSchedulerQOS.swift @@ -38,3 +38,17 @@ public enum DispatchQueueSchedulerQOS { */ case Background } + + +@available(iOS 8, OSX 10.10, *) +extension DispatchQueueSchedulerQOS { + var QOSClass: qos_class_t { + switch self { + case .UserInteractive: return QOS_CLASS_USER_INTERACTIVE + case .UserInitiated: return QOS_CLASS_USER_INITIATED + case .Default: return QOS_CLASS_DEFAULT + case .Utility: return QOS_CLASS_UTILITY + case .Background: return QOS_CLASS_BACKGROUND + } + } +} diff --git a/RxSwift/Schedulers/SerialDispatchQueueScheduler.swift b/RxSwift/Schedulers/SerialDispatchQueueScheduler.swift index 89a00ca8..3d30d630 100644 --- a/RxSwift/Schedulers/SerialDispatchQueueScheduler.swift +++ b/RxSwift/Schedulers/SerialDispatchQueueScheduler.swift @@ -81,19 +81,7 @@ public class SerialDispatchQueueScheduler: SchedulerType { */ @available(iOS 8, OSX 10.10, *) public convenience init(globalConcurrentQueueQOS: DispatchQueueSchedulerQOS, internalSerialQueueName: String = "rx.global_dispatch_queue.serial") { - let priority: qos_class_t - switch globalConcurrentQueueQOS { - case .UserInteractive: - priority = QOS_CLASS_USER_INTERACTIVE - case .UserInitiated: - priority = QOS_CLASS_USER_INITIATED - case .Default: - priority = QOS_CLASS_DEFAULT - case .Utility: - priority = QOS_CLASS_UTILITY - case .Background: - priority = QOS_CLASS_BACKGROUND - } + let priority = globalConcurrentQueueQOS.QOSClass self.init(queue: dispatch_get_global_queue(priority, UInt(0)), internalSerialQueueName: internalSerialQueueName) }