X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=testing%2Flib%2FMemcachedCluster.cpp;h=910aca3ce2ea3dab2a547ca5bd14d33ab7c89ab1;hb=b5ed9c3cab58f1a8e519d5551951ab8c25fc3b84;hp=4a330247eaf4cab4846ce51883cc995eca14f3cb;hpb=f33fd6e7d1df8e5878ce5c5605f64bab7b02ceb6;p=awesomized%2Flibmemcached diff --git a/testing/lib/MemcachedCluster.cpp b/testing/lib/MemcachedCluster.cpp index 4a330247..910aca3c 100644 --- a/testing/lib/MemcachedCluster.cpp +++ b/testing/lib/MemcachedCluster.cpp @@ -1,6 +1,8 @@ #include "MemcachedCluster.hpp" #include "Retry.hpp" +const memcached_st MemcachedCluster::empty_memc{}; + void MemcachedCluster::init() { REQUIRE(cluster.start()); @@ -21,7 +23,9 @@ void MemcachedCluster::init() { } MemcachedCluster::~MemcachedCluster() { - memcached_free(&memc); + if (memcmp(&memc, &empty_memc, sizeof(memc))) { + memcached_free(&memc); + } } void MemcachedCluster::flush() { @@ -29,29 +33,63 @@ void MemcachedCluster::flush() { } MemcachedCluster::MemcachedCluster() -: cluster{Server{getenv_else("MEMCACHED_BINARY", "memcached"), {random_socket_or_port_arg()}}} +: cluster{Server{ + MEMCACHED_BINARY, + {random_socket_or_port_arg()} +}} { init(); } MemcachedCluster::MemcachedCluster(Cluster &&cluster_) -: cluster{forward(cluster_)} +: cluster{move(cluster_)} { init(); } +MemcachedCluster::MemcachedCluster(MemcachedCluster &&mc) + : cluster{Server{}} +{ + *this = move(mc); +} + +MemcachedCluster &MemcachedCluster::operator=(MemcachedCluster &&mc) { + cluster = move(mc.cluster); + memcached_clone(&memc, &mc.memc); + returns = ReturnMatcher{&memc}; + return *this; +} + MemcachedCluster MemcachedCluster::mixed() { return MemcachedCluster{}; } -MemcachedCluster MemcachedCluster::net() { - return MemcachedCluster{Cluster{Server{getenv_else("MEMCACHED_BINARY", "memcached"), {"-p", random_socket_or_port_string}}}}; +MemcachedCluster MemcachedCluster::network() { + return MemcachedCluster{Cluster{Server{ + MEMCACHED_BINARY, + {"-p", random_socket_or_port_string} + }}}; } MemcachedCluster MemcachedCluster::socket() { - return MemcachedCluster{Cluster{Server{getenv_else("MEMCACHED_BINARY", "memcached"), {"-s", random_socket_or_port_string}}}}; + return MemcachedCluster{Cluster{Server{ + MEMCACHED_BINARY, + {"-s", random_socket_or_port_string} + }}}; +} + +void MemcachedCluster::enableBinaryProto(bool enable) { + REQUIRE(MEMCACHED_SUCCESS == memcached_behavior_set(&memc, + MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, enable)); } -void MemcachedCluster::enableBinary(bool enable) { - REQUIRE(MEMCACHED_SUCCESS == memcached_behavior_set(&memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, enable)); +void MemcachedCluster::enableBuffering(bool enable) { + REQUIRE(MEMCACHED_SUCCESS == memcached_behavior_set(&memc, + MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, enable)); } + +void MemcachedCluster::enableReplication() { + REQUIRE(MEMCACHED_SUCCESS == memcached_behavior_set(&memc, + MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS, memcached_server_count(&memc))); +} +