@@ -151,7 +151,7 @@ public class RemoteAudioSource: AudioStreamSource {
151151 guard let self = self else { return }
152152 guard connection. isConnected else { return }
153153 if self . waitingForNetwork {
154- self . seek ( at: self . supportsSeek ? self . position : 0 )
154+ self . seek ( at: self . supportsSeek ? self . position : 0 )
155155 self . waitingForNetwork = false
156156 }
157157 }
@@ -177,8 +177,10 @@ public class RemoteAudioSource: AudioStreamSource {
177177 case let . response( urlResponse) :
178178 parseResponseHeader ( response: urlResponse)
179179 streamOperationQueue. isSuspended = false
180- case let . stream( event) :
181- handleStreamEvent ( event: event)
180+ case let . stream( . success( response) ) :
181+ handleSuccessfulStreamEvent ( response: response)
182+ case let . stream( . failure( error) ) :
183+ handleFailedStreamEvent ( error: error)
182184 case let . complete( event) :
183185 if let error = event. error {
184186 delegate? . errorOccurred ( source: self , error: error)
@@ -191,38 +193,39 @@ public class RemoteAudioSource: AudioStreamSource {
191193 }
192194 }
193195
194- private func handleStreamEvent( event: NetworkDataStream . StreamResult ) {
195- switch event {
196- case let . success( value) :
197- if let audioData = value. data {
198- addStreamOperation { [ weak self] in
199- guard let self = self else { return }
200- if self . shouldTryParsingIcycastHeaders {
201- let ( header, extractedAudio) = self . icycastHeadersProcessor. process ( data: audioData)
202- if let header = header {
203- self . shouldTryParsingIcycastHeaders = false
204- let parser = IcycastHeaderParser ( )
205- self . parsedHeaderOutput = parser. parse ( input: header)
206- if let metadataStep = self . parsedHeaderOutput? . metadataStep {
207- self . metadataStreamProcessor. metadataAvailable ( step: metadataStep)
208- }
209- }
210- let audioCount = self . processAudio ( data: extractedAudio)
211- self . relativePosition += audioCount
212- return
196+ private func handleSuccessfulStreamEvent( response: NetworkDataStream . Response ) {
197+ guard let audioData = response. data else {
198+ self . delegate? . errorOccurred ( source: self , error: NetworkError . missingData)
199+ return
200+ }
201+ addStreamOperation { [ weak self] in
202+ guard let self = self else { return }
203+ if self . shouldTryParsingIcycastHeaders {
204+ let ( header, extractedAudio) = self . icycastHeadersProcessor. process ( data: audioData)
205+ if let header = header {
206+ self . shouldTryParsingIcycastHeaders = false
207+ let parser = IcycastHeaderParser ( )
208+ self . parsedHeaderOutput = parser. parse ( input: header)
209+ if let metadataStep = self . parsedHeaderOutput? . metadataStep {
210+ self . metadataStreamProcessor. metadataAvailable ( step: metadataStep)
213211 }
214- let audioCount = self . processAudio ( data: audioData)
215- self . relativePosition += audioCount
216212 }
217- }
218- case . failure:
219- if !netStatusService. isConnected {
220- waitingForNetwork = true
213+ let audioCount = self . processAudio ( data: extractedAudio)
214+ self . relativePosition += audioCount
221215 return
222216 }
223- waitingForNetwork = false
224- retryOnError ( )
217+ let audioCount = self . processAudio ( data: audioData)
218+ self . relativePosition += audioCount
219+ }
220+ }
221+
222+ private func handleFailedStreamEvent( error: Error ) {
223+ if !netStatusService. isConnected {
224+ waitingForNetwork = true
225+ return
225226 }
227+ waitingForNetwork = false
228+ retryOnError ( )
226229 }
227230
228231 /// Processing audio data, extracting metadata if needed.
0 commit comments