* @brief Libmemcached C++ interface
*/
+#pragma once
#ifndef LIBMEMCACHEDPP_H
#define LIBMEMCACHEDPP_H
:
servers_list(),
memc(),
- servers(NULL),
result()
{
memcached_create(&memc);
:
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,
:
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);
:
servers_list(rhs.servers_list),
memc(),
- servers(NULL),
result()
{
memcached_clone(&memc, const_cast<memcached_st *>(&rhs.getImpl()));
- servers= memcached_servers_parse(servers_list.c_str());
- memcached_server_push(&memc, servers);
+ init();
}
Memcache &operator=(const Memcache &rhs)
if (this != &rhs)
{
memcached_clone(&memc, const_cast<memcached_st *>(&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);
}
/**
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));
}
/**
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);
}
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;
}
/**
{
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)
*/
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<std::string, std::string> server_stats;
std::string servers_list;
memcached_st memc;
- memcached_server_st *servers;
memcached_result_st result;
};