Skip to content

Commit 61e802d

Browse files
authored
Merge pull request #30 from Recouse/parser-fix
Fix potential data corruption
2 parents d783b1c + b156284 commit 61e802d

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

Sources/EventSource/EventSource.swift

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,29 +45,31 @@ public struct EventSource: Sendable {
4545

4646
private let mode: Mode
4747

48-
private let eventParser: EventParser
49-
48+
private let eventParser: @Sendable () -> EventParser
49+
5050
public var timeoutInterval: TimeInterval
51-
51+
52+
public init(mode: Mode = .default, timeoutInterval: TimeInterval = 300) {
53+
self.mode = mode
54+
self.eventParser = { ServerEventParser(mode: mode) }
55+
self.timeoutInterval = timeoutInterval
56+
}
57+
5258
public init(
5359
mode: Mode = .default,
54-
eventParser: EventParser? = nil,
60+
eventParser: @autoclosure @escaping @Sendable () -> EventParser,
5561
timeoutInterval: TimeInterval = 300
5662
) {
5763
self.mode = mode
58-
if let eventParser {
59-
self.eventParser = eventParser
60-
} else {
61-
self.eventParser = ServerEventParser(mode: mode)
62-
}
64+
self.eventParser = eventParser
6365
self.timeoutInterval = timeoutInterval
6466
}
6567

6668
@EventSourceActor
6769
public func dataTask(for urlRequest: URLRequest) -> DataTask {
6870
DataTask(
6971
urlRequest: urlRequest,
70-
eventParser: eventParser,
72+
eventParser: eventParser(),
7173
timeoutInterval: timeoutInterval
7274
)
7375
}

0 commit comments

Comments
 (0)