Array c_Memcache::t_getstats(CStrRef type /* = null_string */, int slabid /* = 0 */, int limit /* = 100 */) { if (!memcached_server_count(&m_memcache)) { return NULL; } char extra_args[30] = {0}; if (slabid) { snprintf(extra_args, sizeof(extra_args), "%s %d %d", type.c_str(), slabid, limit); } else if (!type.empty()) { snprintf(extra_args, sizeof(extra_args), "%s", type.c_str()); } memcached_server_instance_st instance = memcached_server_instance_by_position(&m_memcache, 0); memcached_stat_st stats; if (memcached_stat_servername(&stats, extra_args, instance->hostname, instance->port) != MEMCACHED_SUCCESS) { return NULL; } memcached_return_t ret; return memcache_build_stats(&m_memcache, &stats, &ret); }
Array c_Memcache::t_getstats(const String& type /* = null_string */, int slabid /* = 0 */, int limit /* = 100 */) { if (!memcached_server_count(&m_memcache)) { return NULL; } char extra_args[30] = {0}; if (slabid) { snprintf(extra_args, sizeof(extra_args), "%s %d %d", type.c_str(), slabid, limit); } else if (!type.empty()) { snprintf(extra_args, sizeof(extra_args), "%s", type.c_str()); } LMCD_SERVER_POSITION_INSTANCE_TYPE instance = memcached_server_instance_by_position(&m_memcache, 0); const char *hostname = LMCD_SERVER_HOSTNAME(instance); in_port_t port = LMCD_SERVER_PORT(instance); memcached_stat_st stats; if (memcached_stat_servername(&stats, extra_args, hostname, port) != MEMCACHED_SUCCESS) { return NULL; } memcached_return_t ret; return memcache_build_stats(&m_memcache, &stats, &ret); }
Array c_Memcache::t_getextendedstats(const String& type /* = null_string */, int slabid /* = 0 */, int limit /* = 100 */) { memcached_return_t ret; memcached_stat_st *stats; stats = memcached_stat(&m_memcache, NULL, &ret); if (ret != MEMCACHED_SUCCESS) { return NULL; } int server_count = memcached_server_count(&m_memcache); Array return_val; for (int server_id = 0; server_id < server_count; server_id++) { memcached_stat_st *stat; char stats_key[30] = {0}; size_t key_len; LMCD_SERVER_POSITION_INSTANCE_TYPE instance = memcached_server_instance_by_position(&m_memcache, server_id); const char *hostname = LMCD_SERVER_HOSTNAME(instance); in_port_t port = LMCD_SERVER_PORT(instance); stat = stats + server_id; Array server_stats = memcache_build_stats(&m_memcache, stat, &ret); if (ret != MEMCACHED_SUCCESS) { continue; } key_len = snprintf(stats_key, sizeof(stats_key), "%s:%d", hostname, port); return_val.set(String(stats_key, key_len, CopyString), server_stats); } free(stats); return return_val; }
Array c_Memcache::t_getextendedstats(CStrRef type /* = null_string */, int slabid /* = 0 */, int limit /* = 100 */) { memcached_return_t ret; memcached_stat_st *stats; stats = memcached_stat(&m_memcache, NULL, &ret); if (ret != MEMCACHED_SUCCESS) { return NULL; } int server_count = memcached_server_count(&m_memcache); Array return_val; for (int server_id = 0; server_id < server_count; server_id++) { memcached_server_instance_st server; memcached_stat_st *stat; char stats_key[30] = {0}; size_t key_len; server = memcached_server_instance_by_position(&m_memcache, server_id); stat = stats + server_id; Array server_stats = memcache_build_stats(&m_memcache, stat, &ret); if (ret != MEMCACHED_SUCCESS) { continue; } key_len = snprintf(stats_key, sizeof(stats_key), "%s:%d", server->hostname, server->port); return_val.set(String(stats_key, key_len, CopyString), server_stats); } free(stats); return return_val; }