X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_get.c;h=ee4f68e7ecb0c006c4025f346340ba0941b41ca6;hb=fa50444663754645f6c03c67a3d60cb928562086;hp=cdae9922bcb3acda7316edf9b4325516f1800a05;hpb=dd306653cdd9b09904b25dc4f7ffe7c64d9fd357;p=m6w6%2Flibmemcached diff --git a/libmemcached/memcached_get.c b/libmemcached/memcached_get.c index cdae9922..ee4f68e7 100644 --- a/libmemcached/memcached_get.c +++ b/libmemcached/memcached_get.c @@ -37,7 +37,7 @@ char *memcached_get_by_key(memcached_st *ptr, *error= memcached_mget_by_key(ptr, master_key, master_key_length, - (char **)&key, &key_length, 1); + (const char **)&key, &key_length, 1); value= memcached_fetch(ptr, NULL, NULL, value_length, flags, error); @@ -59,7 +59,7 @@ char *memcached_get_by_key(memcached_st *ptr, { if (rc == MEMCACHED_BUFFERED) { - uint8_t latch; /* We use latch to track the state of the original socket */ + uint64_t latch; /* We use latch to track the state of the original socket */ latch= memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS); if (latch == 0) memcached_behavior_set(ptr, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, 1); @@ -102,8 +102,8 @@ char *memcached_get_by_key(memcached_st *ptr, } memcached_return memcached_mget(memcached_st *ptr, - char **keys, size_t *key_length, - unsigned int number_of_keys) + const char **keys, size_t *key_length, + size_t number_of_keys) { return memcached_mget_by_key(ptr, NULL, 0, keys, key_length, number_of_keys); } @@ -111,19 +111,19 @@ memcached_return memcached_mget(memcached_st *ptr, static memcached_return binary_mget_by_key(memcached_st *ptr, unsigned int master_server_key, bool is_master_key_set, - char **keys, size_t *key_length, - unsigned int number_of_keys); + const char **keys, size_t *key_length, + size_t number_of_keys); memcached_return memcached_mget_by_key(memcached_st *ptr, const char *master_key, size_t master_key_length, - char **keys, + const char **keys, size_t *key_length, - unsigned int number_of_keys) + size_t number_of_keys) { unsigned int x; memcached_return rc= MEMCACHED_NOTFOUND; - char *get_command= "get "; + 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; @@ -145,7 +145,7 @@ memcached_return memcached_mget_by_key(memcached_st *ptr, if (master_key && master_key_length) { - if ((ptr->flags & MEM_VERIFY_KEY) && (memcached_key_test((char **)&master_key, &master_key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED)) + if ((ptr->flags & MEM_VERIFY_KEY) && (memcached_key_test((const char **)&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); is_master_key_set= true; @@ -259,8 +259,8 @@ memcached_return memcached_mget_by_key(memcached_st *ptr, static memcached_return simple_binary_mget(memcached_st *ptr, unsigned int master_server_key, bool is_master_key_set, - char **keys, size_t *key_length, - unsigned int number_of_keys) + const char **keys, size_t *key_length, + size_t number_of_keys) { memcached_return rc= MEMCACHED_NOTFOUND; uint32_t x; @@ -306,12 +306,12 @@ static memcached_return simple_binary_mget(memcached_st *ptr, request.message.header.request.keylen= htons((uint16_t)key_length[x]); request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES; - request.message.header.request.bodylen= htonl(key_length[x]); + request.message.header.request.bodylen= htonl((uint32_t) key_length[x]); if ((memcached_io_write(&ptr->hosts[server_key], request.bytes, sizeof(request.bytes), 0) == -1) || (memcached_io_write(&ptr->hosts[server_key], keys[x], - key_length[x], flush) == -1)) + key_length[x], (char) flush) == -1)) { memcached_server_response_reset(&ptr->hosts[server_key]); rc= MEMCACHED_SOME_ERRORS; @@ -360,19 +360,19 @@ static memcached_return simple_binary_mget(memcached_st *ptr, static memcached_return replication_binary_mget(memcached_st *ptr, uint32_t* hash, bool* dead_servers, - char **keys, size_t *key_length, - unsigned int number_of_keys) + const char **keys, size_t *key_length, + size_t number_of_keys) { memcached_return rc= MEMCACHED_NOTFOUND; uint32_t x; int flush= number_of_keys == 1; - for (int replica = 0; replica <= ptr->number_of_replicas; ++replica) + for (uint32_t replica= 0; replica <= ptr->number_of_replicas; ++replica) { bool success= true; - for (uint32_t x= 0; x < number_of_keys; ++x) + for (x= 0; x < number_of_keys; ++x) { if (hash[x] == ptr->number_of_hosts) continue; /* Already successfully sent */ @@ -405,12 +405,12 @@ static memcached_return replication_binary_mget(memcached_st *ptr, request.message.header.request.keylen= htons((uint16_t)key_length[x]); request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES; - request.message.header.request.bodylen= htonl(key_length[x]); + request.message.header.request.bodylen= htonl((uint32_t) key_length[x]); if ((memcached_io_write(&ptr->hosts[server], request.bytes, sizeof(request.bytes), 0) == -1) || (memcached_io_write(&ptr->hosts[server], keys[x], - key_length[x], flush) == -1)) + key_length[x], (char) flush) == -1)) { memcached_io_reset(&ptr->hosts[server]); dead_servers[server]= true; @@ -443,15 +443,14 @@ static memcached_return replication_binary_mget(memcached_st *ptr, memcached_server_response_increment(&ptr->hosts[x]); /* mark all of the messages bound for this server as sent! */ - for (uint32_t x= 0; x < number_of_keys; ++x) + for (x= 0; x < number_of_keys; ++x) if (hash[x] == x) hash[x]= ptr->number_of_hosts; } } - if (success) { + if (success) break; - } } return rc; @@ -460,8 +459,8 @@ static memcached_return replication_binary_mget(memcached_st *ptr, static memcached_return binary_mget_by_key(memcached_st *ptr, unsigned int master_server_key, bool is_master_key_set, - char **keys, size_t *key_length, - unsigned int number_of_keys) + const char **keys, size_t *key_length, + size_t number_of_keys) { memcached_return rc; @@ -469,7 +468,9 @@ static memcached_return binary_mget_by_key(memcached_st *ptr, { rc= simple_binary_mget(ptr, master_server_key, is_master_key_set, keys, key_length, number_of_keys); - } else { + } + else + { uint32_t* hash; bool* dead_servers; @@ -484,10 +485,10 @@ static memcached_return binary_mget_by_key(memcached_st *ptr, } if (is_master_key_set) - for (unsigned int x= 0; x < number_of_keys; ++x) + for (unsigned int x= 0; x < number_of_keys; x++) hash[x]= master_server_key; else - for (unsigned int x= 0; x < number_of_keys; ++x) + for (unsigned int x= 0; x < number_of_keys; x++) hash[x]= memcached_generate_hash(ptr, keys[x], key_length[x]); rc= replication_binary_mget(ptr, hash, dead_servers, keys,