X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fanalyze.cc;h=c6ac15c20ef18b01f07faedd8080e54895e6abc7;hb=a83eb6704af40530cf38935cb30dd576af563e61;hp=7dcbf8cb3bcc255b601a3bfbfbdb021b1c1809d8;hpb=67456d74f5bd4f354a360d70da503dc58cbe5971;p=awesomized%2Flibmemcached diff --git a/libmemcached/analyze.cc b/libmemcached/analyze.cc index 7dcbf8cb..c6ac15c2 100644 --- a/libmemcached/analyze.cc +++ b/libmemcached/analyze.cc @@ -1,4 +1,4 @@ -#include "common.h" +#include static void calc_largest_consumption(memcached_analysis_st *result, const uint32_t server_num, @@ -12,8 +12,8 @@ static void calc_largest_consumption(memcached_analysis_st *result, } static void calc_oldest_node(memcached_analysis_st *result, - const uint32_t server_num, - const uint32_t uptime) + const uint32_t server_num, + const uint32_t uptime) { if (result->longest_uptime < uptime) { @@ -42,7 +42,9 @@ static void calc_average_item_size(memcached_analysis_st *result, const uint64_t total_bytes) { if (total_items > 0 && total_bytes > 0) + { result->average_item_size= (uint32_t) (total_bytes / total_items); + } } static void calc_hit_ratio(memcached_analysis_st *result, @@ -55,25 +57,36 @@ static void calc_hit_ratio(memcached_analysis_st *result, return; } - double temp= (double) (total_get_hits/total_get_cmds); + double temp= double(total_get_hits) / total_get_cmds; result->pool_hit_ratio= temp * 100; } -memcached_analysis_st *memcached_analyze(memcached_st *memc, +memcached_analysis_st *memcached_analyze(memcached_st *shell, memcached_stat_st *memc_stat, memcached_return_t *error) { + Memcached* memc= memcached2Memcached(shell); uint64_t total_items= 0, total_bytes= 0; uint64_t total_get_cmds= 0, total_get_hits= 0; - uint32_t server_count, x; - memcached_analysis_st *result; + + if (memc == NULL or memc_stat == NULL) + { + return NULL; + } + + memcached_return_t not_used; + if (error == NULL) + { + error= ¬_used; + } *error= MEMCACHED_SUCCESS; - server_count= memcached_server_count(memc); - result= (memcached_analysis_st*)calloc(memcached_server_count(memc), - sizeof(memcached_analysis_st)); + uint32_t server_count= memcached_server_count(memc); + memcached_analysis_st *result= (memcached_analysis_st*)libmemcached_xcalloc(memc, + memcached_server_count(memc), + memcached_analysis_st); - if (!result) + if (result == NULL) { *error= MEMCACHED_MEMORY_ALLOCATION_FAILURE; return NULL; @@ -81,10 +94,10 @@ memcached_analysis_st *memcached_analyze(memcached_st *memc, result->root= memc; - for (x= 0; x < server_count; x++) + for (uint32_t x= 0; x < server_count; x++) { calc_largest_consumption(result, x, memc_stat[x].bytes); - calc_oldest_node(result, x, memc_stat[x].uptime); + calc_oldest_node(result, x, uint32_t(memc_stat[x].uptime)); calc_least_free_node(result, x, memc_stat[x].limit_maxbytes, memc_stat[x].bytes); @@ -103,5 +116,5 @@ memcached_analysis_st *memcached_analyze(memcached_st *memc, void memcached_analyze_free(memcached_analysis_st *ptr) { - free(ptr); + libmemcached_free(ptr->root, ptr); }