/* pause testing */ static void resume_request_timer(evutil_socket_t sock, short which, void * arg) { struct pauser * pause = (struct pauser *)arg; printf("resume_request_timer(%p) timer_ev = %p\n", pause->request->conn, pause->timer_ev); fflush(stdout); evhtp_request_resume(pause->request); }
static void backend_cb(evhtp_request_t * backend_req, void * arg) { evhtp_request_t * frontend_req = (evhtp_request_t *)arg; evbuffer_prepend_buffer(frontend_req->buffer_out, backend_req->buffer_in); evhtp_headers_add_headers(frontend_req->headers_out, backend_req->headers_in); /* * char body[1024] = { '\0' }; * ev_ssize_t len = evbuffer_copyout(frontend_req->buffer_out, body, sizeof(body)); * printf("Backend %zu: %s\n", len, body); */ evhtp_send_reply(frontend_req, EVHTP_RES_OK); evhtp_request_resume(frontend_req); }
void HttpStack::send_reply(Request& req, int rc, SAS::TrailId trail) { send_reply_internal(req, rc, trail); // Resume the request to actually send it. This matches the function to pause the request in // HttpStack::handler_callback_fn. evhtp_request_resume(req.req()); // Update the latency stats and throttling algorithm. unsigned long latency_us = 0; if (req.get_latency(latency_us)) { if (_load_monitor != NULL) { _load_monitor->request_complete(latency_us); } if (_stats != NULL) { _stats->update_http_latency_us(latency_us); } } }