RP: use persistent per-thread Request object

This commit is contained in:
2024-02-21 14:37:48 -03:00
parent 9c5eb45d95
commit 166f428cd1

View File

@@ -23,10 +23,17 @@ class RequestPool {
private int m_totalWorkers; private int m_totalWorkers;
private TaskPool m_taskPool; private TaskPool m_taskPool;
private Logger _l; private Logger _l;
private Request[] m_requests;
this(int totalWorkers = 4) { this(int totalWorkers = 4) {
this.m_totalWorkers = totalWorkers; this.m_totalWorkers = totalWorkers;
this._l = getLogger(); this._l = getLogger();
for (int i = 0; i < totalWorkers + 1; i++) {
Request rq = Request();
// TODO: add custom fields (such as user agent)
this.m_requests ~= rq;
}
} }
void startBackground() { void startBackground() {
@@ -49,10 +56,10 @@ class RequestPool {
} }
Response m_run(PRequest request) { Response m_run(PRequest request) {
Request rq = Request(); Request rq = this.m_requests[this.m_taskPool.workerIndex];
rq.addHeaders(request.headers); rq.addHeaders(request.headers);
_l.debugF!"[%s] %s"(request.method, request.url); _l.debugF!"[%d][%s] %s"(this.m_taskPool.workerIndex, request.method, request.url);
Response rs; Response rs;
@@ -70,7 +77,8 @@ class RequestPool {
return null; return null;
} }
_l.debugF!"[%s] %s result code: %d"(request.method, request.url, rs.code); _l.debugF!"[%d][%s] %s result code: %d"(this.m_taskPool.workerIndex, request.method, request.url, rs
.code);
return rs; return rs;
} }
} }