1 #include "MemcachedCluster.hpp"
4 void MemcachedCluster::init() {
5 REQUIRE(cluster
.start());
7 REQUIRE(memcached_create(&memc
));
8 for (const auto &server
: cluster
.getServers()) {
9 auto target
= server
.getSocketOrPort();
10 if (holds_alternative
<string
>(target
)) {
11 REQUIRE(MEMCACHED_SUCCESS
== memcached_server_add_unix_socket(&memc
, get
<string
>(target
).c_str()));
13 REQUIRE(MEMCACHED_SUCCESS
== memcached_server_add(&memc
, "localhost", get
<int>(target
)));
17 Retry
cluster_is_listening([this]() {
18 return cluster
.isListening();
20 REQUIRE(cluster_is_listening());
23 MemcachedCluster::~MemcachedCluster() {
24 memcached_free(&memc
);
27 void MemcachedCluster::flush() {
28 REQUIRE(MEMCACHED_SUCCESS
== memcached_flush(&memc
, 0));
31 MemcachedCluster::MemcachedCluster()
32 : cluster
{Server
{getenv_else("MEMCACHED_BINARY", "memcached"), {random_socket_or_port_arg()}}}
37 MemcachedCluster::MemcachedCluster(Cluster
&&cluster_
)
38 : cluster
{forward
<Cluster
>(cluster_
)}
43 MemcachedCluster
MemcachedCluster::mixed() {
44 return MemcachedCluster
{};
47 MemcachedCluster
MemcachedCluster::net() {
48 return MemcachedCluster
{Cluster
{Server
{getenv_else("MEMCACHED_BINARY", "memcached"), {"-p", random_socket_or_port_string
}}}};
51 MemcachedCluster
MemcachedCluster::socket() {
52 return MemcachedCluster
{Cluster
{Server
{getenv_else("MEMCACHED_BINARY", "memcached"), {"-s", random_socket_or_port_string
}}}};
55 void MemcachedCluster::enableBinary(bool enable
) {
56 REQUIRE(MEMCACHED_SUCCESS
== memcached_behavior_set(&memc
, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL
, enable
));