X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Flibmemcached%2Fget.cc;h=1afef22d6e1b495317028f1f70768e9f930fc96f;hb=cfd4a0cf233411410d297a7a0965ff88fffe87b0;hp=93330f450b51a991d049bafa2f23319a73df69db;hpb=c8a5aecba8e189092266f304ca81ab42625edf60;p=awesomized%2Flibmemcached diff --git a/src/libmemcached/get.cc b/src/libmemcached/get.cc index 93330f45..1afef22d 100644 --- a/src/libmemcached/get.cc +++ b/src/libmemcached/get.cc @@ -14,13 +14,14 @@ */ #include "libmemcached/common.h" +#include "p9y/random.hpp" char *memcached_get(memcached_st *ptr, const char *key, size_t key_length, size_t *value_length, uint32_t *flags, memcached_return_t *error) { return memcached_get_by_key(ptr, NULL, 0, key, key_length, value_length, flags, error); } -static memcached_return_t __mget_by_key_real(memcached_st *ptr, const char *group_key, +static memcached_return_t mget_by_key_real(memcached_st *ptr, const char *group_key, size_t group_key_length, const char *const *keys, const size_t *key_length, size_t number_of_keys, const bool mget_mode); @@ -39,8 +40,8 @@ char *memcached_get_by_key(memcached_st *shell, const char *group_key, size_t gr } /* Request the key */ - *error = __mget_by_key_real(ptr, group_key, group_key_length, (const char *const *) &key, - &key_length, 1, false); + *error = mget_by_key_real(ptr, group_key, group_key_length, (const char *const *) &key, + &key_length, 1, false); if (ptr) { assert_msg(ptr->query_id == query_id + 1, "Programmer error, the query_id was not incremented."); @@ -98,8 +99,12 @@ char *memcached_get_by_key(memcached_st *shell, const char *group_key, size_t gr if (rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED) { *error = rc; - *value_length = memcached_result_length(result_ptr); - *flags = memcached_result_flags(result_ptr); + if (value_length) { + *value_length = memcached_result_length(result_ptr); + } + if (flags) { + *flags = memcached_result_flags(result_ptr); + } char *result_value = memcached_string_take_value(&result_ptr->value); memcached_result_free(result_ptr); @@ -128,8 +133,8 @@ static memcached_return_t binary_mget_by_key(memcached_st *ptr, const uint32_t m const size_t *key_length, const size_t number_of_keys, const bool mget_mode); -static memcached_return_t __mget_by_key_real(memcached_st *ptr, const char *group_key, - const size_t group_key_length, const char *const *keys, +static memcached_return_t mget_by_key_real(memcached_st *ptr, const char *group_key, + size_t group_key_length, const char *const *keys, const size_t *key_length, size_t number_of_keys, const bool mget_mode) { bool failures_occured_in_sending = false; @@ -178,7 +183,7 @@ static memcached_return_t __mget_by_key_real(memcached_st *ptr, const char *grou if (instance->response_count()) { char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE]; - if (ptr->flags.no_block) { + if (ptr->flags.no_block || ptr->flags.buffer_requests) { memcached_io_write(instance); } @@ -292,8 +297,7 @@ memcached_return_t memcached_mget_by_key(memcached_st *shell, const char *group_ size_t group_key_length, const char *const *keys, const size_t *key_length, size_t number_of_keys) { Memcached *ptr = memcached2Memcached(shell); - return __mget_by_key_real(ptr, group_key, group_key_length, keys, key_length, number_of_keys, - true); + return mget_by_key_real(ptr, group_key, group_key_length, keys, key_length, number_of_keys, true); } memcached_return_t memcached_mget_execute(memcached_st *ptr, const char *const *keys,