X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached.hpp;h=55f96c7ea7a18952142d21ae3d0963b5e827e295;hb=55cf7c68679083cdd7351db3b888c6f8ddcebe09;hp=a8463e1bef89de3ad632bcbdf3b1b508a616b86d;hpb=c67da677fe0944d3d2d3ff46e65fc3bc775404ae;p=awesomized%2Flibmemcached diff --git a/libmemcached/memcached.hpp b/libmemcached/memcached.hpp index a8463e1b..55f96c7e 100644 --- a/libmemcached/memcached.hpp +++ b/libmemcached/memcached.hpp @@ -12,6 +12,7 @@ * @brief Libmemcached C++ interface */ +#pragma once #ifndef LIBMEMCACHEDPP_H #define LIBMEMCACHEDPP_H @@ -40,7 +41,6 @@ public: : servers_list(), memc(), - servers(NULL), result() { memcached_create(&memc); @@ -50,12 +50,10 @@ public: : servers_list(in_servers_list), memc(), - servers(NULL), result() { memcached_create(&memc); - servers= memcached_servers_parse(servers_list.c_str()); - memcached_server_push(&memc, servers); + init(); } Memcache(const std::string &hostname, @@ -63,24 +61,23 @@ public: : servers_list(), memc(), - servers(NULL), result() { memcached_create(&memc); + servers_list.append(hostname); servers_list.append(":"); std::ostringstream strsmt; strsmt << port; servers_list.append(strsmt.str()); - servers= memcached_servers_parse(servers_list.c_str()); - memcached_server_push(&memc, servers); + + init(); } Memcache(memcached_st *clone) : servers_list(), memc(), - servers(NULL), result() { memcached_clone(&memc, clone); @@ -90,12 +87,10 @@ public: : servers_list(rhs.servers_list), memc(), - servers(NULL), result() { memcached_clone(&memc, const_cast(&rhs.getImpl())); - servers= memcached_servers_parse(servers_list.c_str()); - memcached_server_push(&memc, servers); + init(); } Memcache &operator=(const Memcache &rhs) @@ -103,16 +98,23 @@ public: if (this != &rhs) { memcached_clone(&memc, const_cast(&rhs.getImpl())); - servers= memcached_servers_parse(servers_list.c_str()); - memcached_server_push(&memc, servers); + init(); } + return *this; } ~Memcache() { memcached_free(&memc); - memcached_server_list_free(servers); + } + + void init() + { + memcached_server_st *servers; + servers= memcached_servers_parse(servers_list.c_str()); + memcached_server_push(&memc, servers); + memcached_server_free(servers); } /** @@ -175,9 +177,9 @@ public: bool setServers(const std::string &in_servers_list) { servers_list.assign(in_servers_list); - servers= memcached_servers_parse(in_servers_list.c_str()); - memcached_server_push(&memc, servers); - return (servers == NULL); + init(); + + return (memcached_server_count(&memc)); } /** @@ -190,17 +192,9 @@ public: bool addServer(const std::string &server_name, in_port_t port) { memcached_return_t rc; - std::ostringstream strstm; - servers_list.append(","); - servers_list.append(server_name); - servers_list.append(":"); - strstm << port; - servers_list.append(strstm.str()); - servers= memcached_server_list_append(servers, - server_name.c_str(), - port, - &rc); - memcached_server_push(&memc, servers); + + rc= memcached_server_add(&memc, server_name.c_str(), port); + return (rc == MEMCACHED_SUCCESS); } @@ -220,9 +214,10 @@ public: tmp_str.append(":"); strstm << port; tmp_str.append(strstm.str()); - memcached_server_st *server= memcached_servers_parse(tmp_str.c_str()); - memcached_return_t rc= memcached_server_remove(server); - return (rc == MEMCACHED_SUCCESS); + + //memcached_return_t rc= memcached_server_remove(server); + + return false; } /** @@ -247,7 +242,7 @@ public: { ret_val.reserve(value_length); ret_val.assign(value, value + value_length); - key.assign(ret_key); + key.assign(ret_key, key_length); free(value); } else if (value) @@ -965,10 +960,12 @@ public: */ for (uint32_t x= 0; x < server_count; x++) { + memcached_server_instance_st instance= + memcached_server_instance_by_position(&memc, x); std::ostringstream strstm; - std::string server_name(memcached_server_name(&memc, servers[x])); + std::string server_name(memcached_server_name(instance)); server_name.append(":"); - strstm << memcached_server_port(&memc, servers[x]); + strstm << memcached_server_port(instance); server_name.append(strstm.str()); std::map server_stats; @@ -995,7 +992,6 @@ private: std::string servers_list; memcached_st memc; - memcached_server_st *servers; memcached_result_st result; };