为什么我们要将 listenHTTP 中的指针传递给 &handleRequest?
Why we should pass pointer in listenHTTP to &handleRequest?
我正在阅读 vibed 示例,下一刻无法理解:
import vibe.d;
shared static this()
{
auto settings = new HTTPServerSettings;
settings.port = 8080;
listenHTTP(settings, &handleRequest);
}
void handleRequest(HTTPServerRequest req,
HTTPServerResponse res)
{
if (req.path == "/")
res.writeBody("Hello, World!", "text/plain");
}
为什么我们将 listenHTTP
指针传递给 &handleRequest
。我的意思是为什么我们不能简单地为每个请求调用它?
那么 HTTPServerRequest req
和 HTTPServerResponse res
呢?他们是在 handleRequest
调用时创建的还是什么时候创建的?
指针是库如何知道您希望它在每次请求时调用什么函数。
您将指向该函数的指针传递给它,然后 vibe 在该点创建 req 和 res,并在每次收到新请求时调用指向的函数。
如果您尝试在没有指针的情况下传递 handleRequest,它会在请求实际准备好之前尝试在设置时调用它。
我正在阅读 vibed 示例,下一刻无法理解:
import vibe.d;
shared static this()
{
auto settings = new HTTPServerSettings;
settings.port = 8080;
listenHTTP(settings, &handleRequest);
}
void handleRequest(HTTPServerRequest req,
HTTPServerResponse res)
{
if (req.path == "/")
res.writeBody("Hello, World!", "text/plain");
}
为什么我们将 listenHTTP
指针传递给 &handleRequest
。我的意思是为什么我们不能简单地为每个请求调用它?
那么 HTTPServerRequest req
和 HTTPServerResponse res
呢?他们是在 handleRequest
调用时创建的还是什么时候创建的?
指针是库如何知道您希望它在每次请求时调用什么函数。
您将指向该函数的指针传递给它,然后 vibe 在该点创建 req 和 res,并在每次收到新请求时调用指向的函数。
如果您尝试在没有指针的情况下传递 handleRequest,它会在请求实际准备好之前尝试在设置时调用它。