Skip to content

Commit b61146f

Browse files
committed
review comments
1 parent 97590ac commit b61146f

File tree

3 files changed

+49
-29
lines changed

3 files changed

+49
-29
lines changed

Sources/NIOFileSystem/DirectoryEntries.swift

+24-15
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,9 @@ extension DirectoryEntries {
119119
public struct BatchedIterator: AsyncIteratorProtocol {
120120
private var iterator: BufferedOrAnyStream<[DirectoryEntry], DirectoryEntryProducer>.AsyncIterator
121121

122-
fileprivate init(wrapping iterator: BufferedOrAnyStream<[DirectoryEntry], DirectoryEntryProducer>.AsyncIterator) {
122+
fileprivate init(
123+
wrapping iterator: BufferedOrAnyStream<[DirectoryEntry], DirectoryEntryProducer>.AsyncIterator
124+
) {
123125
self.iterator = iterator
124126
}
125127

@@ -136,15 +138,23 @@ extension DirectoryEntries.Batched.AsyncIterator: Sendable {}
136138
// MARK: - Internal
137139

138140
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
139-
extension NIOThrowingAsyncSequenceProducer where Element == [DirectoryEntry], Failure == Error,
140-
Strategy == NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark, Delegate == DirectoryEntryProducer {
141+
extension NIOThrowingAsyncSequenceProducer
142+
where
143+
Element == [DirectoryEntry],
144+
Failure == (any Error),
145+
Strategy == NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark,
146+
Delegate == DirectoryEntryProducer
147+
{
141148
fileprivate static func makeBatchedDirectoryEntryStream(
142149
handle: SystemFileHandle,
143150
recursive: Bool,
144151
entriesPerBatch: Int,
145152
lowWatermark: Int,
146153
highWatermark: Int
147-
) -> NIOThrowingAsyncSequenceProducer<[DirectoryEntry], any Error, NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark, DirectoryEntryProducer> {
154+
) -> NIOThrowingAsyncSequenceProducer<
155+
[DirectoryEntry], any Error, NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark,
156+
DirectoryEntryProducer
157+
> {
148158
let producer = DirectoryEntryProducer(
149159
handle: handle,
150160
recursive: recursive,
@@ -168,10 +178,12 @@ extension NIOThrowingAsyncSequenceProducer where Element == [DirectoryEntry], Fa
168178
}
169179

170180
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
171-
fileprivate typealias DirectoryEntrySequenceProducer = NIOThrowingAsyncSequenceProducer<[DirectoryEntry], Error, NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark, DirectoryEntryProducer>
181+
private typealias DirectoryEntrySequenceProducer = NIOThrowingAsyncSequenceProducer<
182+
[DirectoryEntry], Error, NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark, DirectoryEntryProducer
183+
>
172184

173185
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
174-
fileprivate final class DirectoryEntryProducer: NIOAsyncSequenceProducerDelegate {
186+
private final class DirectoryEntryProducer: NIOAsyncSequenceProducerDelegate {
175187
let state: NIOLockedValueBox<DirectoryEnumerator>
176188
let entriesPerBatch: Int
177189

@@ -262,17 +274,16 @@ fileprivate final class DirectoryEntryProducer: NIOAsyncSequenceProducerDelegate
262274
// error.
263275
self.close()
264276
let source = self.state.withLockedValue { state in
265-
return state.sequenceProducerSource
277+
state.sequenceProducerSource
266278
}
267279
source?.finish(error)
268280
self.clearSource()
269281
}
270282
}
271283

272284
private func onNextBatch(_ entries: [DirectoryEntry]) {
273-
274285
let source = self.state.withLockedValue { state in
275-
return state.sequenceProducerSource
286+
state.sequenceProducerSource
276287
}
277288

278289
guard let source else {
@@ -412,7 +423,6 @@ private struct DirectoryEnumerator: Sendable {
412423
case let .open(threadPool, _, _):
413424
return threadPool
414425
case .openPausedProducing(let threadPool, let source, let array):
415-
self.state = .modifying
416426
self.state = .open(threadPool, source, array)
417427
return threadPool
418428
case .done:
@@ -424,13 +434,12 @@ private struct DirectoryEnumerator: Sendable {
424434

425435
internal mutating func pauseProducing() {
426436
switch self.state {
427-
case .open(let nIOThreadPool, let source, let array):
428-
self.state = .modifying
429-
self.state = .openPausedProducing(nIOThreadPool, source, array)
437+
case .open(let threadPool, let source, let array):
438+
self.state = .openPausedProducing(threadPool, source, array)
430439
case .idle:
431-
() // we won't apply back pressure until something has been read
440+
() // we won't apply back pressure until something has been read
432441
case .openPausedProducing, .done:
433-
() // no-op
442+
() // no-op
434443
case .modifying:
435444
fatalError()
436445
}

Sources/NIOFileSystem/FileChunks.swift

+21-12
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,18 @@ extension FileChunks.FileChunkIterator: Sendable {}
8585
// MARK: - Internal
8686

8787
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
88-
fileprivate typealias FileChunkSequenceProducer = NIOThrowingAsyncSequenceProducer<ByteBuffer, Error, NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark, FileChunkProducer>
88+
private typealias FileChunkSequenceProducer = NIOThrowingAsyncSequenceProducer<
89+
ByteBuffer, Error, NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark, FileChunkProducer
90+
>
8991

9092
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
91-
extension NIOThrowingAsyncSequenceProducer where Element == ByteBuffer, Failure == Error,
92-
Strategy == NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark, Delegate == FileChunkProducer {
93+
extension NIOThrowingAsyncSequenceProducer
94+
where
95+
Element == ByteBuffer,
96+
Failure == Error,
97+
Strategy == NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark,
98+
Delegate == FileChunkProducer
99+
{
93100
static func makeFileChunksStream(
94101
of: Element.Type = Element.self,
95102
handle: SystemFileHandle,
@@ -129,12 +136,12 @@ private final class FileChunkProducer: NIOAsyncSequenceProducerDelegate, Sendabl
129136
let length: Int64
130137

131138
init(range: FileChunks.ChunkRange, handle: SystemFileHandle, length: Int64) {
132-
133-
let state: ProducerState = switch range {
139+
let state: ProducerState
140+
switch range {
134141
case .entireFile:
135-
.init(handle: handle, range: nil)
142+
state = .init(handle: handle, range: nil)
136143
case .partial(let partialRange):
137-
.init(handle: handle, range: partialRange)
144+
state = .init(handle: handle, range: partialRange)
138145
}
139146

140147
self.state = NIOLockedValueBox(state)
@@ -272,7 +279,7 @@ private final class FileChunkProducer: NIOAsyncSequenceProducerDelegate, Sendabl
272279
case .produceMore:
273280
self.produceMore()
274281
case .stopProducing:
275-
self.state.withLockedValue { state in state.pauseProducing()}
282+
self.state.withLockedValue { state in state.pauseProducing() }
276283
case .dropped:
277284
// The source is finished; mark ourselves as done.
278285
self.state.withLockedValue { state in state.done() }
@@ -357,13 +364,13 @@ private struct ProducerState: Sendable {
357364
mutating func didReadBytes(_ count: Int) {
358365
switch self.state {
359366
case var .producing(state):
360-
if state.updateRange(count: count) {
367+
if state.didReadBytes(count) {
361368
self.state = .done(emptyRange: false)
362369
} else {
363370
self.state = .producing(state)
364371
}
365372
case var .pausedProducing(state):
366-
if state.updateRange(count: count) {
373+
if state.didReadBytes(count) {
367374
self.state = .done(emptyRange: false)
368375
} else {
369376
self.state = .pausedProducing(state)
@@ -396,10 +403,12 @@ private struct ProducerState: Sendable {
396403
}
397404
}
398405

399-
400406
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
401407
extension ProducerState.Producing {
402-
mutating func updateRange(count: Int) -> Bool {
408+
/// Updates the range (the offsets to read from and up to) to reflect the number of bytes which have been read.
409+
/// - Parameter count: The number of bytes which have been read.
410+
/// - Returns: Returns `True` if there are no remaining bytes to read, `False` otherwise.
411+
mutating func didReadBytes(_ count: Int) -> Bool {
403412
guard let currentRange = self.range else {
404413
// if we read 0 bytes we are done
405414
return count == 0

Sources/NIOFileSystem/Internal/BufferedOrAnyStream.swift

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ import NIOCore
1818
/// Wraps a ``NIOThrowingAsyncSequenceProducer<Element>`` or ``AnyAsyncSequence<Element>``.
1919
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
2020
internal enum BufferedOrAnyStream<Element, Delegate: NIOAsyncSequenceProducerDelegate> {
21-
typealias AsyncSequenceProducer = NIOThrowingAsyncSequenceProducer<Element, Error, NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark, Delegate>
21+
typealias AsyncSequenceProducer = NIOThrowingAsyncSequenceProducer<
22+
Element, Error, NIOAsyncSequenceProducerBackPressureStrategies.HighLowWatermark, Delegate
23+
>
2224

2325
case nioThrowingAsyncSequenceProducer(AsyncSequenceProducer)
2426
case anyAsyncSequence(AnyAsyncSequence<Element>)
@@ -47,7 +49,7 @@ internal enum BufferedOrAnyStream<Element, Delegate: NIOAsyncSequenceProducerDel
4749
internal mutating func next() async throws -> Element? {
4850
let element: Element?
4951
switch self {
50-
case var .bufferedStream(iterator):
52+
case let .bufferedStream(iterator):
5153
defer { self = .bufferedStream(iterator) }
5254
element = try await iterator.next()
5355
case var .anyAsyncSequence(iterator):

0 commit comments

Comments
 (0)