MCPcopy Create free account
hub / github.com/chenshuo/muduo / parseRequest

Method parseRequest

examples/fastcgi/fastcgi.cc:180–222  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

178}
179
180bool FastCgiCodec::parseRequest(Buffer* buf)
181{
182 while (buf->readableBytes() >= kRecordHeader)
183 {
184 RecordHeader header;
185 memcpy(&header, buf->peek(), kRecordHeader);
186 header.id = sockets::networkToHost16(header.id);
187 header.length = sockets::networkToHost16(header.length);
188 size_t total = kRecordHeader + header.length + header.padding;
189 if (buf->readableBytes() >= total)
190 {
191 switch (header.type)
192 {
193 case kFcgiBeginRequest:
194 onBeginRequest(header, buf);
195 // FIXME: check
196 break;
197 case kFcgiParams:
198 onParams(buf->peek() + kRecordHeader, header.length);
199 // FIXME: check
200 break;
201 case kFcgiStdin:
202 onStdin(buf->peek() + kRecordHeader, header.length);
203 break;
204 case kFcgiData:
205 // FIXME:
206 break;
207 case kFcgiGetValues:
208 // FIXME:
209 break;
210 default:
211 // FIXME:
212 break;
213 }
214 buf->retrieve(total);
215 }
216 else
217 {
218 break;
219 }
220 }
221 return true;
222}
223
224uint16_t readInt16(const void* p)
225{

Callers

nothing calls this directly

Calls 4

networkToHost16Function · 0.85
readableBytesMethod · 0.80
peekMethod · 0.80
retrieveMethod · 0.80

Tested by

no test coverage detected