类简介
- 用于管理HTTP连接和解析HTTP请求报文。
- 主要成员:文件描述符、读\写缓冲区、定时器指针和报文解析状态。
核心代码
解析请求报文
bool HttpRequest::parseRequest()
{
bool ok = true;
bool hasMore = true;
while(hasMore) {
if(state_ == ExpectRequestLine) {
const char* crlf = inBuff_.findCRLF();
if(crlf) {
ok = __parseRequestLine(inBuff_.peek(), crlf);
if(ok) {
inBuff_.retrieveUntil(crlf + 2);
state_ = ExpectHeaders;
} else {
hasMore = false;
}
} else {
hasMore = false;
}
} else if(state_ == ExpectHeaders){
const char* crlf = inBuff_.find(CRLF);
if(crlf) {
const char* colon = std::find(inBuff_.peek(), crlf, ":");
if(colon != crlf) {
__addHeader(inBuff_.peek(), colon, crlf);
} else {
state_ = GotAll;
hasMore = false;
}
inBuff_.retrieveUntil(crlf + 2);
} else {
hasMore = false;
}
} else if(state_ == ExpectBody) {
}
}
return ok;
}