Enable the statistics timer again, so that !stats provide up to date network statistics.

This commit is contained in:
Jan Vidar Krey
2010-01-23 00:43:38 +01:00
parent c670d13369
commit 304ecda16a
4 changed files with 24 additions and 10 deletions

View File

@@ -19,8 +19,6 @@
#include "uhub.h"
#define USERMANAGER_TIMER
/*
* This callback function is used to clear user objects from the userlist.
* Should only be used in uman_shutdown().
@@ -40,7 +38,6 @@ static void clear_user_list_callback(void* ptr)
}
}
void uman_update_stats(struct hub_info* hub)
{
const int factor = TIMEOUT_STATS;
@@ -58,7 +55,6 @@ void uman_update_stats(struct hub_info* hub)
net_stats_reset();
}
void uman_print_stats(struct hub_info* hub)
{
LOG_INFO("Statistics users=" PRINTF_SIZE_T " (peak_users=" PRINTF_SIZE_T "), net_tx=%d KB/s, net_rx=%d KB/s (peak_tx=%d KB/s, peak_rx=%d KB/s)",
@@ -70,6 +66,13 @@ void uman_print_stats(struct hub_info* hub)
(int) hub->stats.net_rx_peak / 1024);
}
static void timer_statistics(struct timeout_evt* t)
{
struct hub_info* hub = (struct hub_info*) t->ptr;
uman_update_stats(hub);
timeout_queue_reschedule(net_backend_get_timeout_queue(), hub->users->timeout, TIMEOUT_STATS);
}
int uman_init(struct hub_info* hub)
{
struct hub_user_manager* users = NULL;
@@ -90,6 +93,10 @@ int uman_init(struct hub_info* hub)
return -1;
}
users->timeout = hub_malloc_zero(sizeof(struct timeout_evt));
timeout_evt_initialize(users->timeout, timer_statistics, hub);
timeout_queue_insert(net_backend_get_timeout_queue(), users->timeout, TIMEOUT_STATS);
hub->users = users;
return 0;
}
@@ -100,6 +107,9 @@ int uman_shutdown(struct hub_info* hub)
if (!hub || !hub->users)
return -1;
timeout_queue_remove(net_backend_get_timeout_queue(), hub->users->timeout);
hub_free(hub->users->timeout);
if (hub->users->list)
{
list_clear(hub->users->list, &clear_user_list_callback);
@@ -108,6 +118,8 @@ int uman_shutdown(struct hub_info* hub)
sid_pool_destroy(hub->users->sids);
hub_free(hub->users);
hub->users = 0;
return 0;
}

View File

@@ -28,6 +28,7 @@ struct hub_user_manager
uint64_t shared_size; /**<< "The total number of shared bytes among fully connected users." */
uint64_t shared_files; /**<< "The total number of shared files among fully connected users." */
struct linked_list* list; /**<< "Contains all logged in users" */
struct timeout_evt* timeout; /**<< "Timeout handler for statistics" */
};
/**