Skip to content

Commit de42664

Browse files
committed
Configuration.readQoS
1 parent 4b7a9bb commit de42664

File tree

3 files changed

+15
-19
lines changed

3 files changed

+15
-19
lines changed

GRDB/Core/Configuration.swift

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,11 @@ public struct Configuration {
248248
/// Default: .default
249249
public var qos: DispatchQoS = .default
250250

251+
/// The quality of service of read accesses
252+
var readQoS: DispatchQoS {
253+
targetQueue?.qos ?? self.qos
254+
}
255+
251256
/// A target queue for database accesses.
252257
///
253258
/// Database connections which are not read-only will prefer
@@ -316,17 +321,4 @@ public struct Configuration {
316321
return DispatchQueue(label: label, qos: qos)
317322
}
318323
}
319-
320-
/// Creates a DispatchQueue which has the quality of service of
321-
/// read accesses.
322-
///
323-
/// The returned queue has no target queue, and won't create deadlocks when
324-
/// used synchronously from a database access.
325-
func makeDispatchQueue(label: String) -> DispatchQueue {
326-
if let targetQueue = targetQueue {
327-
return DispatchQueue(label: label, qos: targetQueue.qos)
328-
} else {
329-
return DispatchQueue(label: label, qos: qos)
330-
}
331-
}
332324
}

GRDB/ValueObservation/ValueConcurrentObserver.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,11 @@ final class ValueConcurrentObserver<Reducer: ValueReducer> {
138138
fetch: reducer._fetch)
139139
self.notificationCallbacks = NotificationCallbacks(events: events, onChange: onChange)
140140
self.reducer = reducer
141-
self.reduceQueue = dbPool.configuration.makeDispatchQueue(label: dbPool.configuration.identifier(
142-
defaultLabel: "GRDB",
143-
purpose: "ValueObservation"))
141+
self.reduceQueue = DispatchQueue(
142+
label: dbPool.configuration.identifier(
143+
defaultLabel: "GRDB",
144+
purpose: "ValueObservation"),
145+
qos: dbPool.configuration.readQoS)
144146
}
145147
}
146148

GRDB/ValueObservation/ValueWriteOnlyObserver.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,11 @@ final class ValueWriteOnlyObserver<Writer: DatabaseWriter, Reducer: ValueReducer
139139
fetch: reducer._fetch)
140140
self.notificationCallbacks = NotificationCallbacks(events: events, onChange: onChange)
141141
self.reducer = reducer
142-
self.reduceQueue = writer.configuration.makeDispatchQueue(label: writer.configuration.identifier(
143-
defaultLabel: "GRDB",
144-
purpose: "ValueObservation"))
142+
self.reduceQueue = DispatchQueue(
143+
label: writer.configuration.identifier(
144+
defaultLabel: "GRDB",
145+
purpose: "ValueObservation"),
146+
qos: writer.configuration.readQoS)
145147
}
146148
}
147149

0 commit comments

Comments
 (0)