// // Copyright Amazon.com Inc. or its affiliates. // All Rights Reserved. // // SPDX-License-Identifier: Apache-2.0 // import Foundation class StateAsyncSequence: AsyncSequence { typealias Iterator = AsyncStream.Iterator private var continuation: AsyncStream.Continuation! = nil private var asyncStream: AsyncStream! = nil init(bufferingPolicy: AsyncStream.Continuation.BufferingPolicy = .unbounded) { asyncStream = AsyncStream( Element.self, bufferingPolicy: bufferingPolicy) { continuation in self.continuation = continuation } } func makeAsyncIterator() -> Iterator { asyncStream.makeAsyncIterator() } func send(_ element: Element) { continuation.yield(element) } func cancel() { continuation.finish() } }