readLoop is the main read goroutine
()
| 278 | |
| 279 | // readLoop is the main read goroutine |
| 280 | func (sm *StreamManager) readLoop() { |
| 281 | readBuf := make([]byte, MaxPacketSize) |
| 282 | for { |
| 283 | sm.lock.Lock() |
| 284 | closed := sm.closed |
| 285 | sm.lock.Unlock() |
| 286 | |
| 287 | if closed { |
| 288 | return |
| 289 | } |
| 290 | |
| 291 | n, err := sm.reader.Read(readBuf) |
| 292 | |
| 293 | if n > 0 { |
| 294 | sm.handleReadData(readBuf[:n]) |
| 295 | } |
| 296 | |
| 297 | if err != nil { |
| 298 | if err == io.EOF { |
| 299 | sm.handleEOF() |
| 300 | } else { |
| 301 | sm.handleError(err) |
| 302 | } |
| 303 | return |
| 304 | } |
| 305 | } |
| 306 | } |
| 307 | |
| 308 | func (sm *StreamManager) handleReadData(data []byte) { |
| 309 | offset := 0 |
no test coverage detected