MCPcopy Create free account
hub / github.com/dfranx/SHADERed / read

Method read

libs/cppdap/src/content_stream.cpp:46–92  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44}
45
46std::string ContentReader::read() {
47 matched_idx = 0;
48
49 // Find Content-Length header prefix
50 if (!scan("Content-Length:")) {
51 return "";
52 }
53
54 // Skip whitespace and tabs
55 while (matchAny(" \t")) {
56 }
57
58 // Parse length
59 size_t len = 0;
60 while (true) {
61 auto c = matchAny("0123456789");
62 if (c == 0) {
63 break;
64 }
65 len *= 10;
66 len += size_t(c) - size_t('0');
67 }
68 if (len == 0) {
69 return "";
70 }
71 // Expect \r\n\r\n
72 if (!match("\r\n\r\n")) {
73 return "";
74 }
75
76 // Read message
77 if (!buffer(len + matched_idx)) {
78 return "";
79 }
80
81 for (size_t i = 0; i < matched_idx; i++) {
82 buf.pop_front();
83 }
84
85 std::string out;
86 out.reserve(len);
87 for (size_t i = 0; i < len; i++) {
88 out.push_back(static_cast<char>(buf.front()));
89 buf.pop_front();
90 }
91 return out;
92}
93
94bool ContentReader::scan(const uint8_t* seq, size_t len) {
95 while (buffer(len)) {

Callers 1

bufferMethod · 0.45

Calls 3

scanFunction · 0.85
reserveMethod · 0.80
push_backMethod · 0.45

Tested by

no test coverage detected