* @brief Appends a network chunk to the rolling buffer and drains complete frames. */
| 30 | * @brief Appends a network chunk to the rolling buffer and drains complete frames. |
| 31 | */ |
| 32 | void AI::SseEventReader::feed(const QByteArray& chunk) |
| 33 | { |
| 34 | if (chunk.isEmpty()) { |
| 35 | drainFrames(); |
| 36 | return; |
| 37 | } |
| 38 | |
| 39 | if (m_buffer.size() + chunk.size() > kMaxBufferBytes) { |
| 40 | qCWarning(serialStudioAI) << "SSE buffer would exceed" << kMaxBufferBytes |
| 41 | << "bytes; dropping connection state"; |
| 42 | Q_EMIT parseError(QStringLiteral("buffer_overflow")); |
| 43 | reset(); |
| 44 | return; |
| 45 | } |
| 46 | |
| 47 | m_buffer.append(chunk); |
| 48 | drainFrames(); |
| 49 | } |
| 50 | |
| 51 | /** |
| 52 | * @brief Discards any partially-received frame data. |
no test coverage detected