| 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/ |
+--------------------------------------------------------------------+
*/
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) << ": "
};
}
+static std::ostream &align(std::ostream &io) {
+ return io << std::right << std::setw(8);
+}
+
int main(int argc, char *argv[]) {
client_options opt{PROGRAM_NAME, PROGRAM_VERSION, PROGRAM_DESCRIPTION};
auto concurrency = DEFAULT_CONCURRENCY;
auto total_start = time_clock::now();
std::cout << std::fixed << std::setprecision(3);
- auto align = [](std::ostream &io) -> std::ostream &{
- return io << std::right << std::setw(8);
- };
-
if (opt.isset("flush")) {
if (opt.isset("verbose")) {
std::cout << "- Flushing servers ...\n";