X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fget.c;h=46b6319c564e16a8b5c902064e7df5bcb9e06239;hb=18ace40ddb7271f3f5e71965f74fe11d7754bd8f;hp=aa4e6f53de49eb2fba940dc08046f50c9ef6909e;hpb=0f7a6d1cbcff19e7a48d18605b7d070758f34776;p=awesomized%2Flibmemcached diff --git a/libmemcached/get.c b/libmemcached/get.c index aa4e6f53..46b6319c 100644 --- a/libmemcached/get.c +++ b/libmemcached/get.c @@ -25,16 +25,16 @@ char *memcached_get(memcached_st *ptr, const char *key, } static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, - const char *master_key, - size_t master_key_length, + 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); char *memcached_get_by_key(memcached_st *ptr, - const char *master_key, - size_t master_key_length, + const char *group_key, + size_t group_key_length, const char *key, size_t key_length, size_t *value_length, uint32_t *flags, @@ -52,7 +52,7 @@ char *memcached_get_by_key(memcached_st *ptr, } /* Request the key */ - *error= memcached_mget_by_key_real(ptr, master_key, master_key_length, + *error= memcached_mget_by_key_real(ptr, group_key, group_key_length, (const char * const *)&key, &key_length, 1, false); @@ -130,15 +130,15 @@ memcached_return_t memcached_mget(memcached_st *ptr, static memcached_return_t binary_mget_by_key(memcached_st *ptr, uint32_t master_server_key, - bool is_master_key_set, + bool is_group_key_set, 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 *master_key, - size_t master_key_length, + const char *group_key, + size_t group_key_length, const char * const *keys, const size_t *key_length, size_t number_of_keys, @@ -148,7 +148,13 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, const char *get_command= "get "; uint8_t get_command_length= 4; unsigned int master_server_key= (unsigned int)-1; /* 0 is a valid server id! */ - bool is_master_key_set= false; + bool is_group_key_set= false; + + memcached_return_t rc; + if ((rc= initialize_query(ptr)) != MEMCACHED_SUCCESS) + { + return rc; + } unlikely (ptr->flags.use_udp) return MEMCACHED_NOT_SUPPORTED; @@ -158,18 +164,15 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, if (number_of_keys == 0) return MEMCACHED_NOTFOUND; - if (memcached_server_count(ptr) == 0) - return MEMCACHED_NO_SERVERS; - if (ptr->flags.verify_key && (memcached_key_test(keys, key_length, number_of_keys) == MEMCACHED_BAD_KEY_PROVIDED)) return MEMCACHED_BAD_KEY_PROVIDED; - if (master_key && master_key_length) + if (group_key && group_key_length) { - if (ptr->flags.verify_key && (memcached_key_test((const char * const *)&master_key, &master_key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED)) + if (ptr->flags.verify_key && (memcached_key_test((const char * const *)&group_key, &group_key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED)) return MEMCACHED_BAD_KEY_PROVIDED; - master_server_key= memcached_generate_hash_with_redistribution(ptr, master_key, master_key_length); - is_master_key_set= true; + master_server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length); + is_group_key_set= true; } /* @@ -197,7 +200,7 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, if (ptr->flags.binary_protocol) { - return binary_mget_by_key(ptr, master_server_key, is_master_key_set, keys, + return binary_mget_by_key(ptr, master_server_key, is_group_key_set, keys, key_length, number_of_keys, mget_mode); } @@ -211,14 +214,14 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, If a server fails we warn about errors and start all over with sending keys to the server. */ - memcached_return_t rc= MEMCACHED_SUCCESS; + WATCHPOINT_ASSERT(rc == MEMCACHED_SUCCESS); size_t hosts_connected= 0; for (uint32_t x= 0; x < number_of_keys; x++) { memcached_server_write_instance_st instance; uint32_t server_key; - if (is_master_key_set) + if (is_group_key_set) { server_key= master_server_key; } @@ -232,7 +235,7 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, struct libmemcached_io_vector_st vector[]= { { .length= get_command_length, .buffer= get_command }, - { .length= ptr->prefix_key_length, .buffer= ptr->prefix_key }, + { .length= memcached_array_size(ptr->prefix_key), .buffer= memcached_array_string(ptr->prefix_key) }, { .length= key_length[x], .buffer= keys[x] }, { .length= 1, .buffer= " " } }; @@ -314,13 +317,13 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, } memcached_return_t memcached_mget_by_key(memcached_st *ptr, - const char *master_key, - size_t master_key_length, + const char *group_key, + size_t group_key_length, const char * const *keys, const size_t *key_length, size_t number_of_keys) { - return memcached_mget_by_key_real(ptr, master_key, master_key_length, keys, + return memcached_mget_by_key_real(ptr, group_key, group_key_length, keys, key_length, number_of_keys, true); } @@ -338,8 +341,8 @@ memcached_return_t memcached_mget_execute(memcached_st *ptr, } memcached_return_t memcached_mget_execute_by_key(memcached_st *ptr, - const char *master_key, - size_t master_key_length, + const char *group_key, + size_t group_key_length, const char * const *keys, const size_t *key_length, size_t number_of_keys, @@ -359,7 +362,7 @@ memcached_return_t memcached_mget_execute_by_key(memcached_st *ptr, }; ptr->callbacks= &cb; - rc= memcached_mget_by_key(ptr, master_key, master_key_length, keys, + rc= memcached_mget_by_key(ptr, group_key, group_key_length, keys, key_length, number_of_keys); ptr->callbacks= original_callbacks; return rc; @@ -367,14 +370,14 @@ memcached_return_t memcached_mget_execute_by_key(memcached_st *ptr, static memcached_return_t simple_binary_mget(memcached_st *ptr, uint32_t master_server_key, - bool is_master_key_set, + bool is_group_key_set, const char * const *keys, const size_t *key_length, size_t number_of_keys, bool mget_mode) { memcached_return_t rc= MEMCACHED_NOTFOUND; - int flush= number_of_keys == 1; + bool flush= (number_of_keys == 1); /* If a server fails we warn about errors and start all over with sending keys @@ -385,7 +388,7 @@ static memcached_return_t simple_binary_mget(memcached_st *ptr, uint32_t server_key; memcached_server_write_instance_st instance; - if (is_master_key_set) + if (is_group_key_set) { server_key= master_server_key; } @@ -423,14 +426,14 @@ static memcached_return_t simple_binary_mget(memcached_st *ptr, return vk; } - request.message.header.request.keylen= htons((uint16_t)(key_length[x] + ptr->prefix_key_length)); + request.message.header.request.keylen= htons((uint16_t)(key_length[x] + memcached_array_size(ptr->prefix_key))); request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES; - request.message.header.request.bodylen= htonl((uint32_t)( key_length[x] + ptr->prefix_key_length)); + request.message.header.request.bodylen= htonl((uint32_t)( key_length[x] + memcached_array_size(ptr->prefix_key))); struct libmemcached_io_vector_st vector[]= { { .length= sizeof(request.bytes), .buffer= request.bytes }, - { .length= ptr->prefix_key_length, .buffer= ptr->prefix_key }, + { .length= memcached_array_size(ptr->prefix_key), .buffer= memcached_array_string(ptr->prefix_key) }, { .length= key_length[x], .buffer= keys[x] } }; @@ -545,9 +548,9 @@ static memcached_return_t replication_binary_mget(memcached_st *ptr, .message.header.request= { .magic= PROTOCOL_BINARY_REQ, .opcode= PROTOCOL_BINARY_CMD_GETK, - .keylen= htons((uint16_t)(key_length[x] + ptr->prefix_key_length)), + .keylen= htons((uint16_t)(key_length[x] + memcached_array_size(ptr->prefix_key))), .datatype= PROTOCOL_BINARY_RAW_BYTES, - .bodylen= htonl((uint32_t)(key_length[x] + ptr->prefix_key_length)) + .bodylen= htonl((uint32_t)(key_length[x] + memcached_array_size(ptr->prefix_key))) } }; @@ -564,7 +567,7 @@ static memcached_return_t replication_binary_mget(memcached_st *ptr, struct libmemcached_io_vector_st vector[]= { { .length= sizeof(request.bytes), .buffer= request.bytes }, - { .length= ptr->prefix_key_length, .buffer= ptr->prefix_key }, + { .length= memcached_array_size(ptr->prefix_key), .buffer= memcached_array_string(ptr->prefix_key) }, { .length= key_length[x], .buffer= keys[x] } }; @@ -589,7 +592,7 @@ static memcached_return_t replication_binary_mget(memcached_st *ptr, static memcached_return_t binary_mget_by_key(memcached_st *ptr, uint32_t master_server_key, - bool is_master_key_set, + bool is_group_key_set, const char * const *keys, const size_t *key_length, size_t number_of_keys, @@ -599,7 +602,7 @@ static memcached_return_t binary_mget_by_key(memcached_st *ptr, if (ptr->number_of_replicas == 0) { - rc= simple_binary_mget(ptr, master_server_key, is_master_key_set, + rc= simple_binary_mget(ptr, master_server_key, is_group_key_set, keys, key_length, number_of_keys, mget_mode); } else @@ -617,7 +620,7 @@ static memcached_return_t binary_mget_by_key(memcached_st *ptr, return MEMCACHED_MEMORY_ALLOCATION_FAILURE; } - if (is_master_key_set) + if (is_group_key_set) { for (size_t x= 0; x < number_of_keys; x++) {