@@ -40,7 +40,9 @@ public class MultiLogRecordExporter: LogRecordExporter, @unchecked Sendable {
4040
4141@available ( macOS 10 . 15 , iOS 13 . 0 , watchOS 6 . 0 , tvOS 13 . 0 , * )
4242extension MultiLogRecordExporter : AsyncLogRecordExporter {
43- public func exportAsync( logRecords: [ ReadableLogRecord ] , explicitTimeout: TimeInterval ? ) async -> ExportResult {
43+ private typealias PartitionedExporters = ( async : [ AsyncLogRecordExporter ] , sync: [ LogRecordExporter ] )
44+
45+ private func partitionExporters( ) -> PartitionedExporters {
4446 var asyncExporters : [ AsyncLogRecordExporter ] = [ ]
4547 var syncExporters : [ LogRecordExporter ] = [ ]
4648 for exporter in logRecordExporters {
@@ -50,6 +52,11 @@ extension MultiLogRecordExporter: AsyncLogRecordExporter {
5052 syncExporters. append ( exporter)
5153 }
5254 }
55+ return ( asyncExporters, syncExporters)
56+ }
57+
58+ public func exportAsync( logRecords: [ ReadableLogRecord ] , explicitTimeout: TimeInterval ? ) async -> ExportResult {
59+ let ( asyncExporters, syncExporters) = partitionExporters ( )
5360
5461 var result = await withTaskGroup ( of: ExportResult . self, returning: ExportResult . self) { group in
5562 for exporter in asyncExporters {
@@ -72,15 +79,7 @@ extension MultiLogRecordExporter: AsyncLogRecordExporter {
7279 }
7380
7481 public func shutdownAsync( explicitTimeout: TimeInterval ? ) async {
75- var asyncExporters : [ AsyncLogRecordExporter ] = [ ]
76- var syncExporters : [ LogRecordExporter ] = [ ]
77- for exporter in logRecordExporters {
78- if let asyncExporter = exporter as? AsyncLogRecordExporter {
79- asyncExporters. append ( asyncExporter)
80- } else {
81- syncExporters. append ( exporter)
82- }
83- }
82+ let ( asyncExporters, syncExporters) = partitionExporters ( )
8483
8584 await withTaskGroup ( of: Void . self) { group in
8685 for exporter in asyncExporters {
@@ -96,15 +95,7 @@ extension MultiLogRecordExporter: AsyncLogRecordExporter {
9695 }
9796
9897 public func forceFlushAsync( explicitTimeout: TimeInterval ? ) async -> ExportResult {
99- var asyncExporters : [ AsyncLogRecordExporter ] = [ ]
100- var syncExporters : [ LogRecordExporter ] = [ ]
101- for exporter in logRecordExporters {
102- if let asyncExporter = exporter as? AsyncLogRecordExporter {
103- asyncExporters. append ( asyncExporter)
104- } else {
105- syncExporters. append ( exporter)
106- }
107- }
98+ let ( asyncExporters, syncExporters) = partitionExporters ( )
10899
109100 var result = await withTaskGroup ( of: ExportResult . self, returning: ExportResult . self) { group in
110101 for exporter in asyncExporters {
0 commit comments