Skip to content

Commit 952ee0a

Browse files
committed
Rename Pool.async to asyncGet
1 parent ee92db9 commit 952ee0a

File tree

2 files changed

+45
-49
lines changed

2 files changed

+45
-49
lines changed

GRDB/Core/DatabasePool.swift

Lines changed: 44 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -333,34 +333,32 @@ extension DatabasePool: DatabaseReader {
333333
}
334334

335335
public func asyncRead(_ value: @escaping (Result<Database, Error>) -> Void) {
336-
do {
337-
guard let readerPool = self.readerPool else {
338-
throw DatabaseError(resultCode: .SQLITE_MISUSE, message: "Connection is closed")
339-
}
340-
readerPool.async { result in
341-
do {
342-
let (reader, releaseReader) = try result.get()
343-
// Second async jump because that's how `Pool.async` has to be used.
344-
reader.async { db in
345-
defer {
346-
try? db.commit() // Ignore commit error
347-
releaseReader()
348-
}
349-
do {
350-
// The block isolation comes from the DEFERRED transaction.
351-
try db.beginTransaction(.deferred)
352-
try db.clearSchemaCacheIfNeeded()
353-
value(.success(db))
354-
} catch {
355-
value(.failure(error))
356-
}
336+
guard let readerPool = self.readerPool else {
337+
value(.failure(DatabaseError(resultCode: .SQLITE_MISUSE, message: "Connection is closed")))
338+
return
339+
}
340+
341+
readerPool.asyncGet { result in
342+
do {
343+
let (reader, releaseReader) = try result.get()
344+
// Second async jump because that's how `Pool.async` has to be used.
345+
reader.async { db in
346+
defer {
347+
try? db.commit() // Ignore commit error
348+
releaseReader()
349+
}
350+
do {
351+
// The block isolation comes from the DEFERRED transaction.
352+
try db.beginTransaction(.deferred)
353+
try db.clearSchemaCacheIfNeeded()
354+
value(.success(db))
355+
} catch {
356+
value(.failure(error))
357357
}
358-
} catch {
359-
value(.failure(error))
360358
}
359+
} catch {
360+
value(.failure(error))
361361
}
362-
} catch {
363-
value(.failure(error))
364362
}
365363
}
366364

@@ -379,32 +377,30 @@ extension DatabasePool: DatabaseReader {
379377
}
380378

381379
public func asyncUnsafeRead(_ value: @escaping (Result<Database, Error>) -> Void) {
382-
do {
383-
guard let readerPool = self.readerPool else {
384-
throw DatabaseError(resultCode: .SQLITE_MISUSE, message: "Connection is closed")
385-
}
386-
readerPool.async { result in
387-
do {
388-
let (reader, releaseReader) = try result.get()
389-
// Second async jump because that's how `Pool.async` has to be used.
390-
reader.async { db in
391-
defer {
392-
releaseReader()
393-
}
394-
do {
395-
// The block isolation comes from the DEFERRED transaction.
396-
try db.clearSchemaCacheIfNeeded()
397-
value(.success(db))
398-
} catch {
399-
value(.failure(error))
400-
}
380+
guard let readerPool = self.readerPool else {
381+
value(.failure(DatabaseError(resultCode: .SQLITE_MISUSE, message: "Connection is closed")))
382+
return
383+
}
384+
385+
readerPool.asyncGet { result in
386+
do {
387+
let (reader, releaseReader) = try result.get()
388+
// Second async jump because that's how `Pool.async` has to be used.
389+
reader.async { db in
390+
defer {
391+
releaseReader()
392+
}
393+
do {
394+
// The block isolation comes from the DEFERRED transaction.
395+
try db.clearSchemaCacheIfNeeded()
396+
value(.success(db))
397+
} catch {
398+
value(.failure(error))
401399
}
402-
} catch {
403-
value(.failure(error))
404400
}
401+
} catch {
402+
value(.failure(error))
405403
}
406-
} catch {
407-
value(.failure(error))
408404
}
409405
}
410406

GRDB/Utils/Pool.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ final class Pool<T> {
107107
///
108108
/// - important: The `execute` argument is executed in a serial dispatch
109109
/// queue, so make sure you use the element asynchronously.
110-
func async(_ execute: @escaping (Result<(element: T, release: () -> Void), Error>) -> Void) {
110+
func asyncGet(_ execute: @escaping (Result<(element: T, release: () -> Void), Error>) -> Void) {
111111
// Inspired by https://khanlou.com/2016/04/the-GCD-handbook/
112112
// > We wait on the semaphore in the serial queue, which means that
113113
// > we’ll have at most one blocked thread when we reach maximum

0 commit comments

Comments
 (0)