接上一节2.1.2
http
在ntyevent结构体中增加http相关变量,用于recv和send之间的数据传递
struct ntyevent {
int fd;
int events;
void *arg;
int (*callback)(int fd, int events, void *arg);
int status;
char buffer[BUFFER_LENGTH];
int length;
long last_active;
// http param
int method; //
char resource[BUFFER_LENGTH];
int ret_code;
};
修改recv_cb和send_cb
recv读取http request,结果记录到ntyevent中
//parse http request into ev
// 1 ok, 0 need more data, -1 error
int http_request(struct ntyevent *ev) {
// GET, POST
char linebuf[1024] = {
0};
int idx = readline(ev->buffer, 0, linebuf);
if (strstr(linebuf, "GET")) {
ev->method = HTTP_METHOD_GET;
//uri
int i = 0;
while (linebuf[sizeof("GET ") + i] != ' ') i++;
linebuf[sizeof("GET ")+i] = '\0';
sprintf(ev->resource, "./%s/%s", HTTP_WEBSERVER_HTML_ROOT, linebuf+sizeof