From 447f5002231c1c43598680ea1dceffcad7ccedd0 Mon Sep 17 00:00:00 2001 From: armatusmiles <akurotych@gmail.com> Date: Thu, 30 Aug 2018 13:33:39 +0300 Subject: [PATCH] [*] Change calculate speed to mbits --- dap_server.c | 4 ++-- dap_server_client.h | 16 ++++++++-------- dap_traffic_track.c | 36 ++++++++++++++++++------------------ 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/dap_server.c b/dap_server.c index 99e1a33..1b7084f 100644 --- a/dap_server.c +++ b/dap_server.c @@ -153,7 +153,7 @@ static void read_write_cb (struct ev_loop* loop, struct ev_io* watcher, int reve 0); if(bytes_read > 0) { - dap_cur->buf_in_size_total += bytes_read; + dap_cur->upload_stat.buf_size_total += bytes_read; dap_cur->buf_in_size += bytes_read; sh->client_read_callback(dap_cur, NULL); } @@ -192,7 +192,7 @@ static void read_write_cb (struct ev_loop* loop, struct ev_io* watcher, int reve } total_sent += bytes_sent; } - dap_cur->buf_out_size_total += dap_cur->buf_out_size; + dap_cur->download_stat.buf_size_total += dap_cur->buf_out_size; dap_cur->buf_out_size = 0; } } diff --git a/dap_server_client.h b/dap_server_client.h index 9a0e7a9..4fabf61 100644 --- a/dap_server_client.h +++ b/dap_server_client.h @@ -35,6 +35,12 @@ typedef void (*dap_client_remote_callback_t) (struct dap_server_client *,void * #define DAP_CLIENT_REMOTE_BUF 10000 +typedef struct traffic_stats { + size_t buf_size_total; + size_t buf_size_total_old; // for calculate speed + double speed_mbs; // MegaBits per second +} traffic_stats_t; + typedef struct dap_server_client{ int socket; bool signal_close; @@ -47,9 +53,8 @@ typedef struct dap_server_client{ size_t buf_in_size; // size of data that is in the input buffer - size_t buf_in_size_total_old; - size_t buf_in_size_total; - double upload_speed_bytes; // fills if module dap_traffic_track initialized + traffic_stats_t upload_stat; + traffic_stats_t download_stat; char buf_out[DAP_CLIENT_REMOTE_BUF+1]; // Internal buffer for output data @@ -58,11 +63,6 @@ typedef struct dap_server_client{ size_t buf_out_size; // size of data that is in the output buffer - - size_t buf_out_size_total_old; - size_t buf_out_size_total; - double download_speed_bytes; // fills if module dap_traffic_track initialized - ev_io* watcher_client; struct dap_server * server; diff --git a/dap_traffic_track.c b/dap_traffic_track.c index 0cc5f1c..144d545 100644 --- a/dap_traffic_track.c +++ b/dap_traffic_track.c @@ -2,7 +2,7 @@ #include "dap_common.h" #define LOG_TAG "dap_traffic_track" -#define BYTES_IN_MB 1048576.0 +#define BITS_IN_BYTE 8 static dap_traffic_callback_t callback = NULL; static dap_server_t * _dap_server; @@ -10,16 +10,16 @@ static ev_timer _timeout_watcher; static struct ev_loop *loop; /** - * @brief calculate_mbs_speed + * @brief calculate_mbits_speed * @param count_bytes * @details timeout we gots from _timeout_watcher.repeat - * @return mbs speed + * @return mbit/second speed */ -static double calculate_mbs_speed(size_t count_bytes) { - size_t bytes_per_timeout = count_bytes / (size_t)_timeout_watcher.repeat; -// log_it(L_DEBUG, "TIMEOUT: %d, bytes_per_timeout: %d", -// (size_t)_timeout_watcher.repeat, bytes_per_timeout); - return bytes_per_timeout / BYTES_IN_MB; +static double calculate_mbits_speed(size_t count_bytes) { + size_t bits_per_second = (count_bytes / (size_t)_timeout_watcher.repeat) * BITS_IN_BYTE; +// log_it(L_DEBUG, "TIMEOUT: %d, bits_per_second: %d mbits: %f", +// (size_t)_timeout_watcher.repeat, bits_per_second, bits_per_second / 1000000.0); + return bits_per_second / 1000000.0; // convert to mbits } static void timeout_cb() @@ -28,18 +28,18 @@ static void timeout_cb() dap_server_client_t *dap_cur, *tmp; HASH_ITER(hh,_dap_server->clients,dap_cur,tmp) { -// log_it(L_DEBUG, "hash iter socket: %d buf_in_total_new: %d, buf_in_total_old: %d", -// dap_cur->socket, dap_cur->buf_in_size_total, dap_cur->buf_in_size_total_old); + dap_cur->upload_stat.speed_mbs = + calculate_mbits_speed(dap_cur->upload_stat.buf_size_total - + dap_cur->upload_stat.buf_size_total_old); + dap_cur->upload_stat.buf_size_total_old = dap_cur->upload_stat.buf_size_total; - dap_cur->upload_speed_bytes = - calculate_mbs_speed(dap_cur->buf_in_size_total - dap_cur->buf_in_size_total_old); - dap_cur->buf_in_size_total_old = dap_cur->buf_in_size_total; + dap_cur->download_stat.speed_mbs = + calculate_mbits_speed(dap_cur->download_stat.buf_size_total - + dap_cur->download_stat.buf_size_total_old); + dap_cur->download_stat.buf_size_total_old = dap_cur->download_stat.buf_size_total; - dap_cur->download_speed_bytes = - calculate_mbs_speed(dap_cur->buf_out_size_total - dap_cur->buf_out_size_total_old); - dap_cur->buf_out_size_total_old = dap_cur->buf_out_size_total; - - // log_it(L_DEBUG, "upload_mbs: %f, download_mbs: %f", dap_cur->upload_speed_bytes, dap_cur->download_speed_bytes); +// log_it(L_DEBUG, "upload_mbs: %f download_mbs: %f", dap_cur->upload_stat.speed_mbs, +// dap_cur->download_stat.speed_mbs); } pthread_mutex_unlock(&_dap_server->mutex_on_hash); -- GitLab