void MemcachedCluster::init() {
REQUIRE(cluster.start());
- Retry cluster_is_listening([this]() {
- return cluster.isListening();
- });
- while (!cluster_is_listening()) {
- cluster.stop();
- cluster.wait();
- cluster.start();
+ while (!cluster.ensureListening()) {
+ cluster.restart();
}
if (auto br = getenv_else("MEMCACHED_BREAK", "0")) {
}
MemcachedCluster::~MemcachedCluster() {
- if (memcmp(&memc, &empty_memc, sizeof(memc))) {
+ if (!!memcmp(&memc, &empty_memc, sizeof(memc))) {
memcached_free(&memc);
}
}
init();
}
-MemcachedCluster::MemcachedCluster(MemcachedCluster &&mc)
+MemcachedCluster::MemcachedCluster(MemcachedCluster &&mc) noexcept
: cluster{Server{}}
{
*this = move(mc);
}
-MemcachedCluster &MemcachedCluster::operator=(MemcachedCluster &&mc) {
+MemcachedCluster &MemcachedCluster::operator=(MemcachedCluster &&mc) noexcept {
cluster = move(mc.cluster);
memcached_clone(&memc, &mc.memc);
- returns = ReturnMatcher{&memc};
+ returns = &memc;
return *this;
}
MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS, memcached_server_count(&memc) - 1));
}
-void MemcachedCluster::killOneServer() {
+void MemcachedCluster::killOneServer() const {
const auto &servers = cluster.getServers();
- const auto &victim = servers[random_num(0UL, servers.size() - 1)];
+ const auto &victim = servers[random_num((size_t)0, servers.size() - 1)];
::kill(victim.getPid(), SIGKILL);
}