move repository from m6w6 to awesomized
[awesomized/libmemcached] / src / bin / memslap.cc
index baf6df6387e07a7390398589e9fde6712255b370..2e695930cdb7f942e4494da2776b5034e603dc91 100644 (file)
@@ -9,7 +9,7 @@
     | the terms online at: https://opensource.org/licenses/BSD-3-Clause  |
     +--------------------------------------------------------------------+
     | Copyright (c) 2006-2014 Brian Aker   https://datadifferential.com/ |
-    | Copyright (c) 2020 Michael Wallner   <mike@php.net>                |
+    | Copyright (c) 2020-2021 Michael Wallner        https://awesome.co/ |
     +--------------------------------------------------------------------+
 */
 
@@ -117,13 +117,28 @@ static size_t execute_get(const client_options &opt, memcached_st &memc, const k
 static size_t execute_mget(const client_options &opt, memcached_st &memc, const keyval_st &kv) {
   size_t retrieved = 0;
   memcached_execute_fn cb[] = {&counter};
+  memcached_return_t rc;
 
-  auto rc = memcached_mget_execute(&memc, kv.key.chr.data(), kv.key.len.data(), kv.num, cb, &retrieved, 1);
+  if (memcached_is_binary(&memc)) {
+    rc = memcached_mget_execute(&memc, kv.key.chr.data(), kv.key.len.data(), kv.num, cb,
+                                     &retrieved, 1);
 
-  while (rc != MEMCACHED_END && memcached_success(rc)) {
-    rc = memcached_fetch_execute(&memc, cb, &retrieved, 1);
-  }
+    while (rc != MEMCACHED_END && memcached_success(rc)) {
+      rc = memcached_fetch_execute(&memc, cb, &retrieved, 1);
+    }
+  } else {
+    memcached_result_st res;
+    memcached_result_create(&memc, &res);
+
+    rc = memcached_mget(&memc, kv.key.chr.data(), kv.key.len.data(), kv.num);
 
+    while (rc != MEMCACHED_END && memcached_success(rc)) {
+      if (memcached_fetch_result(&memc, &res, &rc)) {
+        ++retrieved;
+      }
+    }
+    memcached_result_free(&res);
+  }
   if (memcached_fatal(rc)) {
     if (!opt.isset("quiet")) {
       std::cerr << "Failed mget: " << memcached_strerror(&memc, rc) << ": "