Result of a ChunkedReader::readChunk() call
| 11 | |
| 12 | // Result of a ChunkedReader::readChunk() call |
| 13 | struct ChunkedReadResult { |
| 14 | enum Status { |
| 15 | CHUNKED_NO_DATA, // No complete chunk available yet |
| 16 | CHUNKED_DATA, // Chunk data written to output span |
| 17 | CHUNKED_FINAL // Final (zero-length) chunk received, stream ended |
| 18 | }; |
| 19 | |
| 20 | Status mStatus; |
| 21 | fl::span<const u8> mData; // Subspan of caller's buffer containing the bytes read |
| 22 | |
| 23 | ChunkedReadResult() FL_NOEXCEPT : mStatus(CHUNKED_NO_DATA) {} |
| 24 | ChunkedReadResult(Status s, fl::span<const u8> d) : mStatus(s), mData(d) {} |
| 25 | |
| 26 | bool hasData() const { return mStatus == CHUNKED_DATA; } |
| 27 | bool isFinal() const { return mStatus == CHUNKED_FINAL; } |
| 28 | }; |
| 29 | |
| 30 | // ChunkedReader: Parse HTTP/1.1 chunked transfer encoding |
| 31 | // Format: <chunk-size-hex>\r\n<chunk-data>\r\n ... 0\r\n\r\n |