6 class ReturnMatcher : public Catch::MatcherBase<memcached_return_t> {
8 explicit ReturnMatcher(const memcached_st *memc_, memcached_return_t expected_ = MEMCACHED_SUCCESS)
13 ReturnMatcher(const ReturnMatcher &) = default;
14 ReturnMatcher &operator = (const ReturnMatcher &) = default;
16 ReturnMatcher(ReturnMatcher &&rm) {
19 ReturnMatcher &operator = (ReturnMatcher &&rm) {
20 memc = exchange(rm.memc, nullptr);
21 expected = rm.expected;
25 bool match(const memcached_return_t &arg) const override {
26 return arg == expected;
29 ReturnMatcher success() {
30 return ReturnMatcher{memc};
33 ReturnMatcher operator () (memcached_return_t expected_) {
34 return ReturnMatcher{memc, expected_};
38 string describe() const override {
41 + " (" + memcached_strerror(memc, expected) + ") "
43 + memcached_last_error_message(memc);
47 const memcached_st *memc;
48 memcached_return_t expected;
51 class MemcachedCluster {
54 memcached_st memc{empty_memc};
55 ReturnMatcher returns{&memc};
59 MemcachedCluster(Cluster &&cluster);
62 MemcachedCluster(const MemcachedCluster &) = delete;
63 MemcachedCluster &operator=(const MemcachedCluster &) = delete;
65 MemcachedCluster(MemcachedCluster &&mc)
70 MemcachedCluster &operator=(MemcachedCluster &&mc)
72 cluster = move(mc.cluster);
73 memcached_clone(&memc, &mc.memc);
74 returns = ReturnMatcher{&memc};
78 void enableBinaryProto(bool enable = true);
81 static MemcachedCluster mixed();
82 static MemcachedCluster network();
83 static MemcachedCluster socket();
86 static const memcached_st empty_memc;