*
* Libmemcached library
*
- * Copyright (C) 2011-2012 Data Differential, http://datadifferential.com/
+ * Copyright (C) 2011-2013 Data Differential, http://datadifferential.com/
* Copyright (C) 2006-2009 Brian Aker All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
flags, error);
}
-static memcached_return_t memcached_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,
- bool mget_mode);
-
+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);
char *memcached_get_by_key(memcached_st *shell,
const char *group_key,
size_t group_key_length,
}
/* Request the key */
- *error= memcached_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.");
}
static memcached_return_t binary_mget_by_key(memcached_st *ptr,
- uint32_t master_server_key,
- bool is_group_key_set,
+ const uint32_t master_server_key,
+ const bool is_group_key_set,
+ const char * const *keys,
+ 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,
const size_t *key_length,
size_t number_of_keys,
- bool mget_mode);
-
-static memcached_return_t memcached_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,
- bool mget_mode)
+ const bool mget_mode)
{
bool failures_occured_in_sending= false;
const char *get_command= "get";
*/
for (uint32_t x= 0; x < memcached_server_count(ptr); x++)
{
- org::libmemcached::Instance* instance= memcached_instance_fetch(ptr, x);
+ memcached_instance_st* instance= memcached_instance_fetch(ptr, x);
if (instance->response_count())
{
server_key= memcached_generate_hash_with_redistribution(ptr, keys[x], key_length[x]);
}
- org::libmemcached::Instance* instance= memcached_instance_fetch(ptr, server_key);
+ memcached_instance_st* instance= memcached_instance_fetch(ptr, server_key);
libmemcached_io_vector_st vector[]=
{
bool success_happened= false;
for (uint32_t x= 0; x < memcached_server_count(ptr); x++)
{
- org::libmemcached::Instance* instance= memcached_instance_fetch(ptr, x);
+ memcached_instance_st* instance= memcached_instance_fetch(ptr, x);
if (instance->response_count())
{
size_t number_of_keys)
{
Memcached* ptr= memcached2Memcached(shell);
- return memcached_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,
rc= memcached_mget_by_key(ptr, group_key, group_key_length, keys,
key_length, number_of_keys);
ptr->callbacks= original_callbacks;
+
return rc;
}
static memcached_return_t simple_binary_mget(memcached_st *ptr,
- uint32_t master_server_key,
+ const uint32_t master_server_key,
bool is_group_key_set,
const char * const *keys,
const size_t *key_length,
- size_t number_of_keys, bool mget_mode)
+ const size_t number_of_keys, const bool mget_mode)
{
memcached_return_t rc= MEMCACHED_NOTFOUND;
server_key= memcached_generate_hash_with_redistribution(ptr, keys[x], key_length[x]);
}
- org::libmemcached::Instance* instance= memcached_instance_fetch(ptr, server_key);
+ memcached_instance_st* instance= memcached_instance_fetch(ptr, server_key);
if (instance->response_count() == 0)
{
request.message.header.request.opcode= PROTOCOL_BINARY_CMD_GETK;
}
- memcached_return_t vk;
- vk= memcached_validate_key_length(key_length[x],
- ptr->flags.binary_protocol);
- if (vk != MEMCACHED_SUCCESS)
{
- if (x > 0)
+ memcached_return_t vk= memcached_validate_key_length(key_length[x], ptr->flags.binary_protocol);
+ if (vk != MEMCACHED_SUCCESS)
{
- memcached_io_reset(instance);
- }
+ if (x > 0)
+ {
+ memcached_io_reset(instance);
+ }
- return vk;
+ return vk;
+ }
}
request.message.header.request.keylen= htons((uint16_t)(key_length[x] + memcached_array_size(ptr->_namespace)));
for (uint32_t x= 0; x < memcached_server_count(ptr); ++x)
{
- org::libmemcached::Instance* instance= memcached_instance_fetch(ptr, x);
- initialize_binary_request(instance, request.message.header);
+ memcached_instance_st* instance= memcached_instance_fetch(ptr, x);
if (instance->response_count())
{
- if (memcached_io_write(instance) == false)
- {
- memcached_instance_response_reset(instance);
- memcached_io_reset(instance);
- rc= MEMCACHED_SOME_ERRORS;
- }
-
- if (memcached_io_write(instance, request.bytes,
- sizeof(request.bytes), true) == -1)
+ initialize_binary_request(instance, request.message.header);
+ if ((memcached_io_write(instance) == false) or
+ (memcached_io_write(instance, request.bytes, sizeof(request.bytes), true) == -1))
{
memcached_instance_response_reset(instance);
memcached_io_reset(instance);
}
}
-
return rc;
}
bool* dead_servers,
const char *const *keys,
const size_t *key_length,
- size_t number_of_keys)
+ const size_t number_of_keys)
{
memcached_return_t rc= MEMCACHED_NOTFOUND;
uint32_t start= 0;
for (uint32_t x= 0; x < number_of_keys; ++x)
{
if (hash[x] == memcached_server_count(ptr))
+ {
continue; /* Already successfully sent */
+ }
- uint32_t server= hash[x] + replica;
+ uint32_t server= hash[x] +replica;
/* In case of randomized reads */
if (randomize_read and ((server + start) <= (hash[x] + ptr->number_of_replicas)))
continue;
}
- org::libmemcached::Instance* instance= memcached_instance_fetch(ptr, server);
+ memcached_instance_st* instance= memcached_instance_fetch(ptr, server);
if (instance->response_count() == 0)
{
}
static memcached_return_t binary_mget_by_key(memcached_st *ptr,
- uint32_t master_server_key,
+ const uint32_t master_server_key,
bool is_group_key_set,
const char * const *keys,
const size_t *key_length,
- size_t number_of_keys,
- bool mget_mode)
+ const size_t number_of_keys,
+ const bool mget_mode)
{
if (ptr->number_of_replicas == 0)
{