2012-02-16 14 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); 
関連する問題