One Level Up
Top Level
src/worker.c - weighttp
Functions defined
Source code
- #include "weighttp.h"
- Worker *worker_new(uint8_t id, Config *config, uint16_t num_clients, uint64_t num_requests) {
- Worker *worker;
- uint16_t i;
- worker = W_MALLOC(Worker, 1);
- worker->id = id;
- worker->loop = ev_loop_new(0);
- ev_ref(worker->loop);
- worker->config = config;
- worker->num_clients = num_clients;
- worker->stats.req_todo = num_requests;
- worker->progress_interval = num_requests / 10;
- if (worker->progress_interval == 0)
- worker->progress_interval = 1;
- worker->clients = W_MALLOC(Client*, num_clients);
- for (i = 0; i < num_clients; i++) {
- if (NULL == (worker->clients[i] = client_new(worker)))
- return NULL;
- }
- return worker;
- }
- void worker_free(Worker *worker) {
- uint16_t i;
- for (i = 0; i < worker->num_clients; i++)
- client_free(worker->clients[i]);
- free(worker->clients);
- free(worker);
- }
- void *worker_thread(void* arg) {
- uint16_t i;
- Worker *worker = (Worker*)arg;
-
- for (i = 0; i < worker->num_clients; i++) {
- if (worker->stats.req_started < worker->stats.req_todo)
- client_state_machine(worker->clients[i]);
- }
- ev_loop(worker->loop, 0);
- ev_loop_destroy(worker->loop);
- return NULL;
- }
One Level Up
Top Level