Files
CppNet/test/http/HttpContext.h
2019-08-31 10:25:09 +08:00

51 lines
1.0 KiB
C++

#ifndef TEST_HTTP_HTTP_CONTEXT_HEADER
#define TEST_HTTP_HTTP_CONTEXT_HEADER
#include "HttpRequest.h"
enum HttpRequestParseState{
ExpectRequestLine,
ExpectHeaders,
ExpectBody,
GotAll,
};
namespace base {
class CBuffer;
}
class CHttpContext {
public:
CHttpContext() : _state(ExpectRequestLine) { }
// default copy-ctor, dtor and assignment are fine
// return false if any error
bool ParseRequest(base::CBuffer* buf, uint64_t receive_time);
bool IsGotAll() const {
return _state == GotAll;
}
void Reset() {
_state = ExpectRequestLine;
CHttpRequest dummy;
_request.Swap(dummy);
}
const CHttpRequest& GetRequest() const {
return _request;
}
CHttpRequest& GetRequest(){
return _request;
}
private:
bool processRequestLine(const char* begin, const char* end);
private:
HttpRequestParseState _state;
CHttpRequest _request;
};
#endif