size_t number_of_keys,
bool mget_mode)
{
- unsigned int x;
+ uint32_t x;
memcached_return_t rc= MEMCACHED_NOTFOUND;
const char *get_command= "get ";
uint8_t get_command_length= 4;
{
if (ptr->flags.verify_key && (memcached_key_test((const char * const *)&master_key, &master_key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED))
return MEMCACHED_BAD_KEY_PROVIDED;
- master_server_key= memcached_generate_hash(ptr, master_key, master_key_length);
+ master_server_key= memcached_generate_hash_with_redistribution(ptr, master_key, master_key_length);
is_master_key_set= true;
}
*/
for (x= 0; x < memcached_server_count(ptr); x++)
{
- memcached_server_instance_st *instance=
+ memcached_server_write_instance_st instance=
memcached_server_instance_fetch(ptr, x);
if (memcached_server_response_count(instance))
char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
if (ptr->flags.no_block)
- (void)memcached_io_write(instance, NULL, 0, 1);
+ (void)memcached_io_write(instance, NULL, 0, true);
while(memcached_server_response_count(instance))
(void)memcached_response(instance, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, &ptr->result);
*/
for (x= 0; x < number_of_keys; x++)
{
- memcached_server_instance_st *instance;
+ memcached_server_write_instance_st instance;
uint32_t server_key;
if (is_master_key_set)
}
else
{
- server_key= memcached_generate_hash(ptr, keys[x], key_length[x]);
+ server_key= memcached_generate_hash_with_redistribution(ptr, keys[x], key_length[x]);
}
instance= memcached_server_instance_fetch(ptr, server_key);
if (rc != MEMCACHED_SUCCESS)
continue;
- if ((memcached_io_write(instance, get_command, get_command_length, 0)) == -1)
+ if ((memcached_io_write(instance, get_command, get_command_length, false)) == -1)
{
rc= MEMCACHED_SOME_ERRORS;
continue;
}
/* Only called when we have a prefix key */
- if (ptr->prefix_key[0] != 0)
+ if (ptr->prefix_key_length)
{
- if ((memcached_io_write(instance, ptr->prefix_key, ptr->prefix_key_length, 0)) == -1)
+ if ((memcached_io_write(instance, ptr->prefix_key, ptr->prefix_key_length, false)) == -1)
{
memcached_server_response_reset(instance);
rc= MEMCACHED_SOME_ERRORS;
}
}
- if ((memcached_io_write(instance, keys[x], key_length[x], 0)) == -1)
+ if ((memcached_io_write(instance, keys[x], key_length[x], false)) == -1)
{
memcached_server_response_reset(instance);
rc= MEMCACHED_SOME_ERRORS;
continue;
}
- if ((memcached_io_write(instance, " ", 1, 0)) == -1)
+ if ((memcached_io_write(instance, " ", 1, false)) == -1)
{
memcached_server_response_reset(instance);
rc= MEMCACHED_SOME_ERRORS;
*/
for (x= 0; x < memcached_server_count(ptr); x++)
{
- memcached_server_instance_st *instance=
+ memcached_server_write_instance_st instance=
memcached_server_instance_fetch(ptr, x);
if (memcached_server_response_count(instance))
{
/* We need to do something about non-connnected hosts in the future */
- if ((memcached_io_write(instance, "\r\n", 2, 1)) == -1)
+ if ((memcached_io_write(instance, "\r\n", 2, true)) == -1)
{
rc= MEMCACHED_SOME_ERRORS;
}
for (x= 0; x < number_of_keys; x++)
{
uint32_t server_key;
- memcached_server_instance_st *instance;
+ memcached_server_write_instance_st instance;
if (is_master_key_set)
{
}
else
{
- server_key= memcached_generate_hash(ptr, keys[x], key_length[x]);
+ server_key= memcached_generate_hash_with_redistribution(ptr, keys[x], key_length[x]);
}
instance= memcached_server_instance_fetch(ptr, server_key);
request.message.header.request.bodylen= htonl((uint32_t) key_length[x]);
if ((memcached_io_write(instance, request.bytes,
- sizeof(request.bytes), 0) == -1) ||
+ sizeof(request.bytes), false) == -1) ||
(memcached_io_write(instance, keys[x],
- key_length[x], (char) flush) == -1))
+ key_length[x], flush) == -1))
{
memcached_server_response_reset(instance);
rc= MEMCACHED_SOME_ERRORS;
for (x= 0; x < memcached_server_count(ptr); x++)
{
- memcached_server_instance_st *instance=
+ memcached_server_write_instance_st instance=
memcached_server_instance_fetch(ptr, x);
if (memcached_server_response_count(instance))
{
- if (memcached_io_write(instance, NULL, 0, 1) == -1)
+ if (memcached_io_write(instance, NULL, 0, true) == -1)
{
memcached_server_response_reset(instance);
memcached_io_reset(instance);
}
if (memcached_io_write(instance, request.bytes,
- sizeof(request.bytes), 1) == -1)
+ sizeof(request.bytes), true) == -1)
{
memcached_server_response_reset(instance);
memcached_io_reset(instance);
for (x= 0; x < number_of_keys; ++x)
{
- memcached_server_instance_st *instance;
+ memcached_server_write_instance_st instance;
if (hash[x] == memcached_server_count(ptr))
continue; /* Already successfully sent */
* just make sure we work _correctly_
*/
if ((memcached_io_write(instance, request.bytes,
- sizeof(request.bytes), 0) == -1) ||
+ sizeof(request.bytes), false) == -1) ||
(memcached_io_write(instance, keys[x],
- key_length[x], 1) == -1))
+ key_length[x], true) == -1))
{
memcached_io_reset(instance);
dead_servers[server]= true;
uint32_t* hash;
bool* dead_servers;
- hash= ptr->call_malloc(ptr, sizeof(uint32_t) * number_of_keys);
- dead_servers= ptr->call_calloc(ptr, memcached_server_count(ptr), sizeof(bool));
+ hash= libmemcached_malloc(ptr, sizeof(uint32_t) * number_of_keys);
+ dead_servers= libmemcached_calloc(ptr, memcached_server_count(ptr), sizeof(bool));
if (hash == NULL || dead_servers == NULL)
{
- ptr->call_free(ptr, hash);
- ptr->call_free(ptr, dead_servers);
+ libmemcached_free(ptr, hash);
+ libmemcached_free(ptr, dead_servers);
return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
}
if (is_master_key_set)
- for (unsigned int x= 0; x < number_of_keys; x++)
+ {
+ for (size_t x= 0; x < number_of_keys; x++)
+ {
hash[x]= master_server_key;
+ }
+ }
else
- for (unsigned int x= 0; x < number_of_keys; x++)
- hash[x]= memcached_generate_hash(ptr, keys[x], key_length[x]);
+ {
+ for (size_t x= 0; x < number_of_keys; x++)
+ {
+ hash[x]= memcached_generate_hash_with_redistribution(ptr, keys[x], key_length[x]);
+ }
+ }
rc= replication_binary_mget(ptr, hash, dead_servers, keys,
key_length, number_of_keys);
- ptr->call_free(ptr, hash);
- ptr->call_free(ptr, dead_servers);
+ libmemcached_free(ptr, hash);
+ libmemcached_free(ptr, dead_servers);
return MEMCACHED_SUCCESS;
}