2012-02-16 101 views
0

有没有简单的方法来检查给定的memcached_st*是否已成功连接到memcached服务器?libmemcached - 检查我是否已连接

我通过memcached_server_add_with_weight连接,当我给它虚假的主机名时它返回MEMCACHED_SUCCESS。同样,在致电memcached_server_add_with_weight之后立即致电memcached_last_error_errno给我MEMCACHED_SUCCESS

回答

0

一个有趣的方法是检查实际套接字描述符。 如果libmemcached成功连接到服务器,那么套接字描述符为正,否则为-1。

std::shared_ptr<memcached_st> es (memcached_create (NULL), [](memcached_st* msp) {memcached_free (msp);}); 
memcached_server_add_with_weight (es.get(), "server1", 9201, 100); 
memcached_server_add (es.get(), "server2", 9201); 
memcached_server_add (es.get(), "server3", 9201); 
memcached_server_fn serverVisitor = [](const memcached_st *ptr, memcached_server_instance_st server, void *context) { 
    if (server->fd < 0) throw std::runtime_error (std::string ("libmemcached connection to ") + server->hostname + " failed!"); 
    return MEMCACHED_SUCCESS; 
}; 
memcached_server_cursor (es.get(), &serverVisitor, NULL, 1);