%PDF- %PDF-
Direktori : /proc/self/root/usr/src/node-v0.10.4/tools/wrk/src/ |
Current File : //proc/self/root/usr/src/node-v0.10.4/tools/wrk/src/wrk.h |
#ifndef WRK_H #define WRK_H #include "config.h" #include <pthread.h> #include <inttypes.h> #include <sys/types.h> #include "stats.h" #include "ae.h" #include "http_parser.h" #include "tinymt64.h" #define VERSION "1.0.0" #define RECVBUF 8192 #define SAMPLES 100000 #define SOCKET_TIMEOUT_MS 2000 #define SAMPLE_INTERVAL_MS 100 #define TIMEOUT_INTERVAL_MS 2000 typedef struct { uint32_t connect; uint32_t read; uint32_t write; uint32_t status; uint32_t timeout; } errors; typedef struct { pthread_t thread; aeEventLoop *loop; uint64_t connections; uint64_t requests; uint64_t complete; uint64_t bytes; uint64_t start; tinymt64_t rand; errors errors; struct connection *cs; } thread; typedef struct connection { thread *thread; http_parser parser; int fd; uint64_t start; uint64_t latency; char buf[RECVBUF]; } connection; struct config; static void *thread_main(void *); static int connect_socket(thread *, connection *); static int reconnect_socket(thread *, connection *); static int sample_rate(aeEventLoop *, long long, void *); static int check_timeouts(aeEventLoop *, long long, void *); static void socket_writeable(aeEventLoop *, int, void *, int); static void socket_readable(aeEventLoop *, int, void *, int); static int request_complete(http_parser *); static uint64_t time_us(); static uint64_t rand64(tinymt64_t *, uint64_t); static char *extract_url_part(char *, struct http_parser_url *, enum http_parser_url_fields); static char *format_request(char *, char *, char *, char **); static int parse_args(struct config *, char **, char **, int, char **); static void print_stats_header(); static void print_stats(char *, stats *, char *(*)(long double)); #endif /* WRK_H */