| 178 | } |
| 179 | |
| 180 | bool 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 | |
| 224 | uint16_t readInt16(const void* p) |
| 225 | { |
nothing calls this directly
no test coverage detected