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.");
{
*error= MEMCACHED_NOTFOUND;
}
-
if (value == NULL)
{
if (ptr->get_key_failure and *error == MEMCACHED_NOTFOUND)
}
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";
if (number_of_keys == 0)
{
- return memcached_set_error(*ptr, MEMCACHED_NOTFOUND, MEMCACHED_AT, memcached_literal_param("number_of_keys was zero"));
+ return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Numbers of keys provided was zero"));
}
- if (memcached_failed(memcached_key_test(*ptr, keys, key_length, number_of_keys)))
+ if (memcached_failed((rc= memcached_key_test(*ptr, keys, key_length, number_of_keys))))
{
- return memcached_last_error(ptr);
+ assert(memcached_last_error(ptr) == rc);
+
+ return rc;
}
bool is_group_key_set= 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())
{
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;
bool flush= (number_of_keys == 1);
+ if (memcached_failed(rc= memcached_key_test(*ptr, keys, key_length, number_of_keys)))
+ {
+ return rc;
+ }
+
/*
If a server fails we warn about errors and start all over with sending keys
to the server.
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;
}
+#if 0
{
memcached_return_t vk= memcached_validate_key_length(key_length[x], ptr->flags.binary_protocol);
- if (vk != MEMCACHED_SUCCESS)
+ if (memcached_failed(rc= memcached_key_test(*memc, (const char **)&key, &key_length, 1)))
{
+ memcached_set_error(ptr, vk, MEMCACHED_AT, memcached_literal_param("Key was too long."));
+
if (x > 0)
{
memcached_io_reset(instance);
return vk;
}
}
+#endif
request.message.header.request.keylen= htons((uint16_t)(key_length[x] + memcached_array_size(ptr->_namespace)));
request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
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())
{
+ 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))
{
}
}
-
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;
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)
{