FastLED 3.9.15
Loading...
Searching...
No Matches

◆ feed()

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

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

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

References fl::available(), fl::span< T, Extent >::begin(), consume(), fl::span< T, Extent >::end(), 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: