evhttp_request_get_response_code_line这个函数是在哪个库中实现的
时间: 2023-09-09 17:12:44 浏览: 109
evhttp_request_get_response_code_line函数是libevent库中evhttp请求处理模块中的函数。该函数用于获取HTTP响应的状态行,也就是响应码和原因短语。
具体实现可以在libevent库的evhttp_request.c文件中找到,该文件定义了evhttp_request结构体和与之相关的函数实现。其中,evhttp_request_get_response_code_line函数的实现如下:
```c
const char *
evhttp_request_get_response_code_line(const struct evhttp_request *req)
{
if (req->response_code_line == NULL) {
if (req->response_code >= 0 && req->response_code < 1000) {
const char *reason = http_reason(req->response_code);
if (!reason)
reason = "";
req->response_code_line =
evutil_vasprintf("%d %s", req->response_code, reason);
} else {
req->response_code_line = (char*)"";
}
}
return req->response_code_line;
}
```
该函数首先判断响应状态行是否已经被缓存,如果没有则根据响应码生成一个新的状态行,并将其缓存起来,然后返回状态行的指针。
需要注意的是,该函数返回的指针指向的内容是被缓存的,因此在调用该函数后如果修改了响应码或原因短语,需要重新调用该函数才能获取最新的状态行。
阅读全文