From 7dcb46547e881714f9c8cedb43538eb1d0ca27c7 Mon Sep 17 00:00:00 2001 From: Muukii Date: Fri, 11 Oct 2024 22:26:12 +0900 Subject: [PATCH] Patch --- Sources/Bulk/Core/BulkSink.swift | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/Sources/Bulk/Core/BulkSink.swift b/Sources/Bulk/Core/BulkSink.swift index bb48cff..572327e 100644 --- a/Sources/Bulk/Core/BulkSink.swift +++ b/Sources/Bulk/Core/BulkSink.swift @@ -7,45 +7,38 @@ public protocol BulkSinkType: Actor { } public actor BulkSink: BulkSinkType { - + public typealias Element = B.Element - + private let targets: [any TargetType] - + private let timer: BulkBufferTimer - + private let buffer: B - + public init( buffer: B, debounceDueTime: Duration = .seconds(1), targets: [any TargetType] ) { - + self.buffer = buffer self.targets = targets weak var instance: BulkSink? - - self.timer = BulkBufferTimer(interval: debounceDueTime) { [instance] in - await instance?.purge() + + self.timer = BulkBufferTimer(interval: debounceDueTime) { + await instance?.flush() } - + instance = self - + } deinit { } - private func purge() { - let elements = buffer.purge() - elements.forEach { - self.send($0) - } - } - public func send(_ newElement: Element) { timer.tap() switch buffer.write(element: newElement) { @@ -58,9 +51,8 @@ public actor BulkSink: BulkSinkType { break } } - + public func flush() { - timer.tap() let elements = buffer.purge() targets.forEach { $0.write(items: elements)