-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHttpContext.h
48 lines (39 loc) · 861 Bytes
/
HttpContext.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef __HTTPCONTEXT_H__
#define __HTTPCONTEXT_H__
#include <muduo/base/copyable.h>
#include <muduo/net/Buffer.h>
#include "HttpRequest.h"
class Buffer;
class HttpContext:public muduo::copyable
{
public:
enum HttpRequestParseState
{
kExpectRequestLine,
kExpectHeaders,
kExpectBody,
kGotAll,
};
HttpContext()
: state_(kExpectRequestLine)
{
}
bool parseRequest(muduo::net::Buffer* buf, muduo::Timestamp receiveTime);
bool gotAll() const
{ return state_ == kGotAll; }
void reset()
{
state_ = kExpectRequestLine;
HttpRequest dummy;
request_.swap(dummy);
}
const HttpRequest& request() const
{ return request_; }
HttpRequest& request()
{ return request_; }
private:
bool processRequestLine(const char* begin, const char* end);
HttpRequestParseState state_;
HttpRequest request_;
};
#endif