Skip to content

Commit a264c85

Browse files
Merge pull request #5 from GraphQLSwift/kimdv/nio-2
NIO 2
2 parents 2a39d84 + 22cb671 commit a264c85

File tree

8 files changed

+51
-104
lines changed

8 files changed

+51
-104
lines changed

Package.resolved

+2-11
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,8 @@
66
"repositoryURL": "https://github.com/apple/swift-nio.git",
77
"state": {
88
"branch": null,
9-
"revision": "29a9f2aca71c8afb07e291336f1789337ce235dd",
10-
"version": "1.13.2"
11-
}
12-
},
13-
{
14-
"package": "swift-nio-zlib-support",
15-
"repositoryURL": "https://github.com/apple/swift-nio-zlib-support.git",
16-
"state": {
17-
"branch": null,
18-
"revision": "37760e9a52030bb9011972c5213c3350fa9d41fd",
19-
"version": "1.0.0"
9+
"revision": "b8368b6e09b7993896c42a6199103a73ecc1dbf9",
10+
"version": "2.0.0"
2011
}
2112
}
2213
]

Package.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ let package = Package(
99
.library(name: "SwiftDataLoader", targets: ["SwiftDataLoader"]),
1010
],
1111
dependencies: [
12-
.package(url: "https://github.com/apple/swift-nio.git", from: "1.13.2"),
12+
.package(url: "https://github.com/apple/swift-nio.git", from: "2.0.0"),
1313
],
1414
targets: [
1515
.target(name: "SwiftDataLoader", dependencies: ["NIO"]),
1616
.testTarget(name: "SwiftDataLoaderTests", dependencies: ["SwiftDataLoader"]),
1717
],
18-
swiftLanguageVersions: [.v3, .v4, .v4_2, .version("5")]
18+
swiftLanguageVersions: [.v5]
1919
)

[email protected]

-19
This file was deleted.

[email protected]

-19
This file was deleted.

Sources/SwiftDataLoader/DataLoader.swift

+25-25
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,19 @@ final public class DataLoader<Key: Hashable, Value> {
3838
return cachedFuture
3939
}
4040

41-
let promise: EventLoopPromise<Value> = eventLoop.next().newPromise()
41+
let promise: EventLoopPromise<Value> = eventLoop.next().makePromise()
4242

4343
if options.batchingEnabled {
4444
queue.append((key: key, promise: promise))
4545
} else {
4646
_ = try batchLoadFunction([key]).map { results in
4747
if results.isEmpty {
48-
promise.fail(error: DataLoaderError.noValueForKey("Did not return value for key: \(key)"))
48+
promise.fail(DataLoaderError.noValueForKey("Did not return value for key: \(key)"))
4949
} else {
5050
let result = results[0]
5151
switch result {
52-
case .success(let value): promise.succeed(result: value)
53-
case .failure(let error): promise.fail(error: error)
52+
case .success(let value): promise.succeed(value)
53+
case .failure(let error): promise.fail(error)
5454
}
5555
}
5656
}
@@ -66,9 +66,9 @@ final public class DataLoader<Key: Hashable, Value> {
6666
}
6767

6868
public func loadMany(keys: [Key], on eventLoop: EventLoopGroup) throws -> EventLoopFuture<[Value]> {
69-
guard !keys.isEmpty else { return eventLoop.next().newSucceededFuture(result: []) }
69+
guard !keys.isEmpty else { return eventLoop.next().makeSucceededFuture([]) }
7070

71-
let promise: EventLoopPromise<[Value]> = eventLoop.next().newPromise()
71+
let promise: EventLoopPromise<[Value]> = eventLoop.next().makePromise()
7272

7373
var result = [Value]()
7474

@@ -79,7 +79,7 @@ final public class DataLoader<Key: Hashable, Value> {
7979
result.append(value)
8080

8181
if result.count == keys.count {
82-
promise.succeed(result: result)
82+
promise.succeed(result)
8383
}
8484
}
8585
}
@@ -102,8 +102,8 @@ final public class DataLoader<Key: Hashable, Value> {
102102
let cacheKey = options.cacheKeyFunction?(key) ?? key
103103

104104
if futureCache[cacheKey] == nil {
105-
let promise: EventLoopPromise<Value> = eventLoop.next().newPromise()
106-
promise.succeed(result: value)
105+
let promise: EventLoopPromise<Value> = eventLoop.next().makePromise()
106+
promise.succeed(value)
107107

108108
futureCache[cacheKey] = promise.futureResult
109109
}
@@ -112,33 +112,33 @@ final public class DataLoader<Key: Hashable, Value> {
112112
}
113113

114114
// MARK: - Private
115-
private func dispatchQueueBatch(queue: LoaderQueue<Key, Value>, on eventLoop: EventLoopGroup) throws { //}-> EventLoopFuture<[Value]> {
115+
private func dispatchQueueBatch(queue: LoaderQueue<Key, Value>, on eventLoop: EventLoopGroup) throws {
116116
let keys = queue.map { $0.key }
117117

118118
if keys.isEmpty {
119-
return //eventLoop.next().newSucceededFuture(result: [])
119+
return
120120
}
121121

122122
// Step through the values, resolving or rejecting each Promise in the
123123
// loaded queue.
124124
_ = try batchLoadFunction(keys)
125-
.thenThrowing { values in
126-
if values.count != keys.count {
127-
throw DataLoaderError.typeError("The function did not return an array of the same length as the array of keys. \nKeys count: \(keys.count)\nValues count: \(values.count)")
128-
}
125+
.flatMapThrowing { values in
126+
if values.count != keys.count {
127+
throw DataLoaderError.typeError("The function did not return an array of the same length as the array of keys. \nKeys count: \(keys.count)\nValues count: \(values.count)")
128+
}
129129

130-
for entry in queue.enumerated() {
131-
let result = values[entry.offset]
130+
for entry in queue.enumerated() {
131+
let result = values[entry.offset]
132132

133-
switch result {
134-
case .failure(let error): entry.element.promise.fail(error: error)
135-
case .success(let value): entry.element.promise.succeed(result: value)
133+
switch result {
134+
case .failure(let error): entry.element.promise.fail(error)
135+
case .success(let value): entry.element.promise.succeed(value)
136+
}
136137
}
137138
}
138-
}
139-
.mapIfError{ error in
140-
self.failedDispatch(queue: queue, error: error)
141-
}
139+
.recover { error in
140+
self.failedDispatch(queue: queue, error: error)
141+
}
142142
}
143143

144144
public func dispatchQueue(on eventLoop: EventLoopGroup) throws {
@@ -163,7 +163,7 @@ final public class DataLoader<Key: Hashable, Value> {
163163
private func failedDispatch(queue: LoaderQueue<Key, Value>, error: Error) {
164164
queue.forEach { (key, promise) in
165165
_ = clear(key: key)
166-
promise.fail(error: error)
166+
promise.fail(error)
167167
}
168168
}
169169
}

Tests/SwiftDataLoaderTests/DataLoaderAbuseTests.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class DataLoaderAbuseTests: XCTestCase {
2020
}
2121

2222
let identityLoader = DataLoader<Int, Int>(options: DataLoaderOptions(batchingEnabled: false)) { keys in
23-
eventLoopGroup.next().newSucceededFuture(result: [])
23+
eventLoopGroup.next().makeSucceededFuture([])
2424
}
2525

2626
let value = try identityLoader.load(key: 1, on: eventLoopGroup)
@@ -37,7 +37,7 @@ class DataLoaderAbuseTests: XCTestCase {
3737
}
3838

3939
let identityLoader = DataLoader<Int, Int>(options: DataLoaderOptions()) { keys in
40-
eventLoopGroup.next().newSucceededFuture(result: [])
40+
eventLoopGroup.next().makeSucceededFuture([])
4141
}
4242

4343
let value = try identityLoader.load(key: 1, on: eventLoopGroup)
@@ -64,7 +64,7 @@ class DataLoaderAbuseTests: XCTestCase {
6464
}
6565
}
6666

67-
return eventLoopGroup.next().newSucceededFuture(result: results)
67+
return eventLoopGroup.next().makeSucceededFuture(results)
6868
}
6969

7070
let value1 = try identityLoader.load(key: 1, on: eventLoopGroup)
@@ -94,7 +94,7 @@ class DataLoaderAbuseTests: XCTestCase {
9494
}
9595
}
9696

97-
return eventLoopGroup.next().newSucceededFuture(result: results)
97+
return eventLoopGroup.next().makeSucceededFuture(results)
9898
}
9999

100100
let value1 = try identityLoader.load(key: 1, on: eventLoopGroup)

Tests/SwiftDataLoaderTests/DataLoaderTests.swift

+11-11
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ final class DataLoaderTests: XCTestCase {
1616
let identityLoader = DataLoader<Int, Int>(options: DataLoaderOptions(batchingEnabled: false)) { keys in
1717
let results = keys.map { DataLoaderFutureValue.success($0) }
1818

19-
return eventLoopGroup.next().newSucceededFuture(result: results)
19+
return eventLoopGroup.next().makeSucceededFuture(results)
2020
}
2121

2222
let value = try identityLoader.load(key: 1, on: eventLoopGroup)
@@ -36,7 +36,7 @@ final class DataLoaderTests: XCTestCase {
3636
let identityLoader = DataLoader<Int, Int>() { keys in
3737
let results = keys.map { DataLoaderFutureValue.success($0) }
3838

39-
return eventLoopGroup.next().newSucceededFuture(result: results)
39+
return eventLoopGroup.next().makeSucceededFuture(results)
4040
}
4141

4242
let values = try identityLoader.loadMany(keys: [1, 2], on: eventLoopGroup)
@@ -63,7 +63,7 @@ final class DataLoaderTests: XCTestCase {
6363
loadCalls.append(keys)
6464
let results = keys.map { DataLoaderFutureValue.success($0) }
6565

66-
return eventLoopGroup.next().newSucceededFuture(result: results)
66+
return eventLoopGroup.next().makeSucceededFuture(results)
6767
}
6868

6969
let value1 = try identityLoader.load(key: 1, on: eventLoopGroup)
@@ -90,7 +90,7 @@ final class DataLoaderTests: XCTestCase {
9090
loadCalls.append(keys)
9191
let results = keys.map { DataLoaderFutureValue.success($0) }
9292

93-
return eventLoopGroup.next().newSucceededFuture(result: results)
93+
return eventLoopGroup.next().makeSucceededFuture(results)
9494
}
9595

9696
let value1 = try identityLoader.load(key: 1, on: eventLoopGroup)
@@ -119,7 +119,7 @@ final class DataLoaderTests: XCTestCase {
119119
loadCalls.append(keys)
120120
let results = keys.map { DataLoaderFutureValue.success($0) }
121121

122-
return eventLoopGroup.next().newSucceededFuture(result: results)
122+
return eventLoopGroup.next().makeSucceededFuture(results)
123123
}
124124

125125
let value1 = try identityLoader.load(key: 1, on: eventLoopGroup)
@@ -146,7 +146,7 @@ final class DataLoaderTests: XCTestCase {
146146
loadCalls.append(keys)
147147
let results = keys.map { DataLoaderFutureValue.success($0) }
148148

149-
return eventLoopGroup.next().newSucceededFuture(result: results)
149+
return eventLoopGroup.next().makeSucceededFuture(results)
150150
}
151151

152152
let value1 = try identityLoader.load(key: "A", on: eventLoopGroup)
@@ -193,7 +193,7 @@ final class DataLoaderTests: XCTestCase {
193193
loadCalls.append(keys)
194194
let results = keys.map { DataLoaderFutureValue.success($0) }
195195

196-
return eventLoopGroup.next().newSucceededFuture(result: results)
196+
return eventLoopGroup.next().makeSucceededFuture(results)
197197
}
198198

199199
let value1 = try identityLoader.load(key: "A", on: eventLoopGroup)
@@ -230,7 +230,7 @@ final class DataLoaderTests: XCTestCase {
230230
loadCalls.append(keys)
231231
let results = keys.map { DataLoaderFutureValue.success($0) }
232232

233-
return eventLoopGroup.next().newSucceededFuture(result: results)
233+
return eventLoopGroup.next().makeSucceededFuture(results)
234234
}
235235

236236
let value1 = try identityLoader.load(key: "A", on: eventLoopGroup)
@@ -267,7 +267,7 @@ final class DataLoaderTests: XCTestCase {
267267
loadCalls.append(keys)
268268
let results = keys.map { DataLoaderFutureValue.success($0) }
269269

270-
return eventLoopGroup.next().newSucceededFuture(result: results)
270+
return eventLoopGroup.next().makeSucceededFuture(results)
271271
}
272272

273273
_ = identityLoader.prime(key: "A", value: "A", on: eventLoopGroup)
@@ -295,7 +295,7 @@ final class DataLoaderTests: XCTestCase {
295295
loadCalls.append(keys)
296296
let results = keys.map { DataLoaderFutureValue.success($0) }
297297

298-
return eventLoopGroup.next().newSucceededFuture(result: results)
298+
return eventLoopGroup.next().makeSucceededFuture(results)
299299
}
300300

301301
_ = identityLoader.prime(key: "A", value: "X", on: eventLoopGroup)
@@ -335,7 +335,7 @@ final class DataLoaderTests: XCTestCase {
335335
loadCalls.append(keys)
336336
let results = keys.map { DataLoaderFutureValue.success($0) }
337337

338-
return eventLoopGroup.next().newSucceededFuture(result: results)
338+
return eventLoopGroup.next().makeSucceededFuture(results)
339339
}
340340

341341
_ = identityLoader.prime(key: "A", value: "X", on: eventLoopGroup)

azure-pipelines.yml

+7-13
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,21 @@ jobs:
88
strategy:
99
maxParallel: 10
1010
matrix:
11-
swift420:
12-
containerImage: norionomura/swift:42
13-
swift421:
14-
containerImage: norionomura/swift:421
11+
swift500:
12+
containerImage: apple/swift:5
1513
container: $[ variables['containerImage'] ]
1614
steps:
1715
- script: swift test --parallel
1816
displayName: swift test
1917

2018
- job: Xcode
2119
pool:
22-
vmImage: 'macOS 10.13'
20+
vmImage: 'macOS 10.14'
2321
strategy:
2422
maxParallel: 10
2523
matrix:
26-
xcode10:
27-
DEVELOPER_DIR: /Applications/Xcode_10.app
28-
xcode101:
29-
DEVELOPER_DIR: /Applications/Xcode_10.1.app
24+
xcode102:
25+
DEVELOPER_DIR: /Applications/Xcode_10.2.app
3026
steps:
3127
- script: swift package generate-xcodeproj
3228
displayName: Generate Xcode project file
@@ -45,14 +41,12 @@ jobs:
4541

4642
- job: SwiftPM
4743
pool:
48-
vmImage: 'macOS 10.13'
44+
vmImage: 'macOS 10.14'
4945
strategy:
5046
maxParallel: 10
5147
matrix:
52-
xcode10:
53-
DEVELOPER_DIR: /Applications/Xcode_10.app
5448
xcode101:
55-
DEVELOPER_DIR: /Applications/Xcode_10.1.app
49+
DEVELOPER_DIR: /Applications/Xcode_10.2.app
5650
steps:
5751
- script: xcodebuild -version
5852
displayName: xcodebuild -version

0 commit comments

Comments
 (0)