Skip to content

Commit b5f0dd5

Browse files
authored
refactor: use makeStream for creating AsyncStream with continuation (#3710)
1 parent 5798204 commit b5f0dd5

File tree

4 files changed

+17
-22
lines changed

4 files changed

+17
-22
lines changed

Amplify/Core/Support/AmplifyAsyncSequence.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,16 @@ public typealias WeakAmplifyAsyncSequenceRef<Element> = WeakRef<AmplifyAsyncSequ
1111

1212
public class AmplifyAsyncSequence<Element: Sendable>: AsyncSequence, Cancellable {
1313
public typealias Iterator = AsyncStream<Element>.Iterator
14-
private var asyncStream: AsyncStream<Element>! = nil
15-
private var continuation: AsyncStream<Element>.Continuation! = nil
14+
private let asyncStream: AsyncStream<Element>
15+
private let continuation: AsyncStream<Element>.Continuation
1616
private var parent: Cancellable?
1717

1818
public private(set) var isCancelled: Bool = false
1919

2020
public init(parent: Cancellable? = nil,
2121
bufferingPolicy: AsyncStream<Element>.Continuation.BufferingPolicy = .unbounded) {
2222
self.parent = parent
23-
asyncStream = AsyncStream<Element>(Element.self, bufferingPolicy: bufferingPolicy) { continuation in
24-
self.continuation = continuation
25-
}
23+
(asyncStream, continuation) = AsyncStream.makeStream(of: Element.self, bufferingPolicy: bufferingPolicy)
2624
}
2725

2826
public func makeAsyncIterator() -> Iterator {

Amplify/Core/Support/AmplifyAsyncThrowingSequence.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,16 @@ public typealias WeakAmplifyAsyncThrowingSequenceRef<Element> = WeakRef<AmplifyA
1111

1212
public class AmplifyAsyncThrowingSequence<Element: Sendable>: AsyncSequence, Cancellable {
1313
public typealias Iterator = AsyncThrowingStream<Element, Error>.Iterator
14-
private var asyncStream: AsyncThrowingStream<Element, Error>! = nil
15-
private var continuation: AsyncThrowingStream<Element, Error>.Continuation! = nil
14+
private let asyncStream: AsyncThrowingStream<Element, Error>
15+
private let continuation: AsyncThrowingStream<Element, Error>.Continuation
1616
private var parent: Cancellable?
1717

1818
public private(set) var isCancelled: Bool = false
1919

2020
public init(parent: Cancellable? = nil,
2121
bufferingPolicy: AsyncThrowingStream<Element, Error>.Continuation.BufferingPolicy = .unbounded) {
2222
self.parent = parent
23-
asyncStream = AsyncThrowingStream(Element.self, bufferingPolicy: bufferingPolicy, { continuation in
24-
self.continuation = continuation
25-
})
23+
(asyncStream, continuation) = AsyncThrowingStream.makeStream(of: Element.self, bufferingPolicy: bufferingPolicy)
2624
}
2725

2826
public func makeAsyncIterator() -> Iterator {

Amplify/Core/Support/TaskQueue.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ import Foundation
1010
/// A helper for executing asynchronous work serially.
1111
public class TaskQueue<Success> {
1212
typealias Block = @Sendable () async -> Void
13-
private var streamContinuation: AsyncStream<Block>.Continuation!
13+
private let streamContinuation: AsyncStream<Block>.Continuation
1414

1515
public init() {
16-
let stream = AsyncStream<Block>.init { continuation in
17-
streamContinuation = continuation
18-
}
16+
let (stream, continuation) = AsyncStream.makeStream(of: Block.self)
17+
self.streamContinuation = continuation
1918

2019
Task {
2120
for await block in stream {

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/StateMachine/hierarchical-state-machine-swift/CancellableAsyncStream.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ class CancellableAsyncStream<Element>: AsyncSequence {
2323
}
2424

2525
convenience init(with publisher: AnyPublisher<Element, Never>) {
26-
var cancellable: AnyCancellable?
27-
self.init(asyncStream: AsyncStream { continuation in
28-
cancellable = publisher.sink { _ in
29-
continuation.finish()
30-
} receiveValue: {
31-
continuation.yield($0)
32-
}
33-
}, cancellable: cancellable)
26+
let (asyncStream, contiuation) = AsyncStream.makeStream(of: Element.self)
27+
let cancellable = publisher.sink { _ in
28+
contiuation.finish()
29+
} receiveValue: {
30+
contiuation.yield($0)
31+
}
32+
33+
self.init(asyncStream: asyncStream, cancellable: cancellable)
3434
}
3535

3636
func makeAsyncIterator() -> AsyncStream<Element>.AsyncIterator {

0 commit comments

Comments
 (0)