FastLED 3.10.8
Loading...
Searching...
No Matches

◆ feed()

void fl::net::http::ChunkedReader::feed ( fl::span< const u8 > data)

Definition at line 21 of file chunked_encoding.cpp.hpp.

21 {
22 mBuffer.insert(mBuffer.end(), data.begin(), data.end());
23
24 // Process buffer based on current state
25 while (true) {
26 switch (mState) {
27 case READ_SIZE: {
28 // Parse chunk size (hex) until CRLF
30 if (mChunkSize == 0) {
31 // Final chunk (size 0)
33 return;
34 } else {
35 // Start reading chunk data
37 mBytesRead = 0;
38 }
39 } else {
40 // Not enough data to parse size
41 return;
42 }
43 break;
44 }
45 case READ_DATA: {
46 // Read chunk data (mChunkSize bytes)
47 size_t remaining = mChunkSize;
48 size_t available = mBuffer.size();
49 if (available >= remaining) {
50 // Complete chunk data available, save to mCurrentChunk
51 mCurrentChunk.clear();
52 mCurrentChunk.reserve(remaining);
53 for (size_t i = 0; i < remaining; i++) {
54 mCurrentChunk.push_back(mBuffer[i]);
55 }
56 consume(remaining);
58 } else {
59 // Not enough data yet
60 return;
61 }
62 break;
63 }
64 case READ_TRAILER: {
65 // Read trailing CRLF
66 if (hasCRLF()) {
67 consume(2); // Consume CRLF
68 // Chunk is now complete, add to mChunks
69 mChunks.push_back(mCurrentChunk);
70 mCurrentChunk.clear();
72 } else {
73 // Not enough data for CRLF
74 return;
75 }
76 break;
77 }
78 case STATE_FINAL:
79 // No more processing
80 return;
81 }
82 }
83}
bool parseChunkSize(size_t &outSize) FL_NO_EXCEPT
void consume(size_t n) FL_NO_EXCEPT
bool hasCRLF() const FL_NO_EXCEPT
fl::vector< fl::vector< u8 > > mChunks
iterator end() FL_NO_EXCEPT
Definition span.h:469
iterator begin() FL_NO_EXCEPT
Definition span.h:465
int available() FL_NO_EXCEPT

References fl::available(), consume(), fl::FL_NO_EXCEPT, hasCRLF(), mBuffer, mBytesRead, mChunks, mChunkSize, mCurrentChunk, mState, parseChunkSize(), READ_DATA, READ_SIZE, READ_TRAILER, and STATE_FINAL.

+ Here is the call graph for this function: