Skip to content

Commit d5da21d

Browse files
committed
Align AsyncSequenceFromSyncSequence with swift-async-algorithms
1 parent 1f146a4 commit d5da21d

File tree

4 files changed

+26
-19
lines changed

4 files changed

+26
-19
lines changed

Sources/AsyncHTTPClient/AsyncAwait/AsyncSequenceFromSyncSequence.swift

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,33 +14,40 @@
1414

1515
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
1616
@usableFromInline
17-
struct AsyncSequenceFromSyncSequence<Wrapped: Sequence & Sendable>: AsyncSequence, Sendable {
18-
@usableFromInline typealias Element = Wrapped.Element
17+
struct AsyncLazySequence<Base: Sequence>: AsyncSequence {
18+
@usableFromInline typealias Element = Base.Element
1919
@usableFromInline struct AsyncIterator: AsyncIteratorProtocol {
20-
@usableFromInline var iterator: Wrapped.Iterator
21-
@inlinable init(iterator: Wrapped.Iterator) {
20+
@usableFromInline var iterator: Base.Iterator
21+
@inlinable init(iterator: Base.Iterator) {
2222
self.iterator = iterator
2323
}
24-
@inlinable mutating func next() async throws -> Wrapped.Element? {
24+
@inlinable mutating func next() async throws -> Base.Element? {
2525
self.iterator.next()
2626
}
2727
}
2828

29-
@usableFromInline var wrapped: Wrapped
29+
@usableFromInline var base: Base
3030

31-
@inlinable init(wrapped: Wrapped) {
32-
self.wrapped = wrapped
31+
@inlinable init(base: Base) {
32+
self.base = base
3333
}
3434

3535
@inlinable func makeAsyncIterator() -> AsyncIterator {
36-
.init(iterator: self.wrapped.makeIterator())
36+
.init(iterator: self.base.makeIterator())
3737
}
3838
}
3939

4040
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
41-
extension Sequence where Self: Sendable {
41+
extension AsyncLazySequence: Sendable where Base: Sendable {}
42+
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
43+
extension AsyncLazySequence.AsyncIterator: Sendable where Base.Iterator: Sendable {}
44+
45+
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
46+
extension Sequence {
4247
/// Turns `self` into an `AsyncSequence` by wending each element of `self` asynchronously.
43-
@inlinable func asAsyncSequence() -> AsyncSequenceFromSyncSequence<Self> {
44-
.init(wrapped: self)
48+
@inlinable var async: AsyncLazySequence<Self> {
49+
.init(base: self)
4550
}
4651
}
52+
53+

Sources/AsyncHTTPClient/AsyncAwait/HTTPClientResponse.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,11 @@ extension HTTPClientResponse.Body {
9696
}
9797

9898
public init() {
99-
self.init(EmptyCollection().asAsyncSequence())
99+
self.init(EmptyCollection().async)
100100
}
101101

102102
public init(_ byteBuffer: ByteBuffer) {
103-
self.init(CollectionOfOne(byteBuffer).asAsyncSequence())
103+
self.init(CollectionOfOne(byteBuffer).async)
104104
}
105105
}
106106

Tests/AsyncHTTPClientTests/AsyncAwaitEndToEndTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
216216
ByteBuffer(string: "1"),
217217
ByteBuffer(string: "2"),
218218
ByteBuffer(string: "34"),
219-
].asAsyncSequence(), length: .unknown)
219+
].async, length: .unknown)
220220

221221
guard let response = await XCTAssertNoThrowWithResult(
222222
try await client.execute(request, deadline: .now() + .seconds(10), logger: logger)
@@ -241,7 +241,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
241241
let logger = Logger(label: "HTTPClient", factory: StreamLogHandler.standardOutput(label:))
242242
var request = HTTPClientRequest(url: "https://localhost:\(bin.port)/")
243243
request.method = .POST
244-
request.body = .stream("1234".utf8.asAsyncSequence(), length: .unknown)
244+
request.body = .stream("1234".utf8.async, length: .unknown)
245245

246246
guard let response = await XCTAssertNoThrowWithResult(
247247
try await client.execute(request, deadline: .now() + .seconds(10), logger: logger)
@@ -614,7 +614,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
614614
ByteBuffer(string: "1"),
615615
ByteBuffer(string: "2"),
616616
ByteBuffer(string: "34"),
617-
].asAsyncSequence(), length: .unknown)
617+
].async, length: .unknown)
618618

619619
guard let response1 = await XCTAssertNoThrowWithResult(
620620
try await client.execute(request, deadline: .now() + .seconds(10), logger: logger)

Tests/AsyncHTTPClientTests/HTTPClientRequestTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ class HTTPClientRequestTests: XCTestCase {
408408
let asyncSequence = ByteBuffer(string: "post body")
409409
.readableBytesView
410410
.chunked(maxChunkSize: 2)
411-
.asAsyncSequence()
411+
.async
412412
.map { ByteBuffer($0) }
413413

414414
request.body = .stream(asyncSequence, length: .unknown)
@@ -449,7 +449,7 @@ class HTTPClientRequestTests: XCTestCase {
449449
let asyncSequence = ByteBuffer(string: "post body")
450450
.readableBytesView
451451
.chunked(maxChunkSize: 2)
452-
.asAsyncSequence()
452+
.async
453453
.map { ByteBuffer($0) }
454454

455455
request.body = .stream(asyncSequence, length: .known(9))

0 commit comments

Comments
 (0)