From: Brian Aker Date: Sat, 28 Jan 2012 23:49:13 +0000 (-0800) Subject: Remove some of copy/past around incr/decr X-Git-Tag: 1.0.5~87 X-Git-Url: https://git.m6w6.name/?a=commitdiff_plain;h=5ee34ec60842c213159233cb3ba5d7e0236845bb;p=awesomized%2Flibmemcached Remove some of copy/past around incr/decr --- diff --git a/libmemcached/auto.cc b/libmemcached/auto.cc index 964e8971..9d85ad43 100644 --- a/libmemcached/auto.cc +++ b/libmemcached/auto.cc @@ -139,75 +139,73 @@ static memcached_return_t binary_incr_decr(memcached_server_write_instance_st in return memcached_vdo(instance, vector, 4, true); } -memcached_return_t memcached_increment(memcached_st *ptr, +memcached_return_t memcached_increment(memcached_st *memc, const char *key, size_t key_length, uint32_t offset, uint64_t *value) { - return memcached_increment_by_key(ptr, key, key_length, key, key_length, offset, value); + return memcached_increment_by_key(memc, key, key_length, key, key_length, offset, value); } -memcached_return_t memcached_decrement(memcached_st *ptr, - const char *key, size_t key_length, - uint32_t offset, - uint64_t *value) -{ - return memcached_decrement_by_key(ptr, key, key_length, key, key_length, offset, value); -} - -memcached_return_t memcached_increment_by_key(memcached_st *ptr, - const char *group_key, size_t group_key_length, - const char *key, size_t key_length, - uint64_t offset, - uint64_t *value) +static memcached_return_t increment_decrement_by_key(const protocol_binary_command command, + memcached_st *memc, + const char *group_key, size_t group_key_length, + const char *key, size_t key_length, + uint64_t offset, + uint64_t *value) { - memcached_return_t rc; uint64_t local_value; if (value == NULL) { value= &local_value; } - if (memcached_failed(rc= initialize_query(ptr, true))) + memcached_return_t rc; + if (memcached_failed(rc= initialize_query(memc, true))) { return rc; } - if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1))) + if (memcached_failed(rc= memcached_key_test(*memc, (const char **)&key, &key_length, 1))) { - return rc; + return memcached_last_error(memc); } - uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length); - memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, server_key); + uint32_t server_key= memcached_generate_hash_with_redistribution(memc, group_key, group_key_length); + memcached_server_write_instance_st instance= memcached_server_instance_fetch(memc, server_key); bool reply= memcached_is_replying(instance->root); - LIBMEMCACHED_MEMCACHED_INCREMENT_START(); - if (memcached_is_binary(ptr)) + if (memcached_is_binary(memc)) { - rc= binary_incr_decr(instance, PROTOCOL_BINARY_CMD_INCREMENT, + rc= binary_incr_decr(instance, command, key, key_length, uint64_t(offset), 0, MEMCACHED_EXPIRATION_NOT_ADD, reply); } else { - rc= text_incr_decr(instance, true, key, key_length, offset, reply); + rc= text_incr_decr(instance, + command == PROTOCOL_BINARY_CMD_INCREMENT ? true : false, + key, key_length, + offset, reply); } auto_response(instance, reply, rc, value); - LIBMEMCACHED_MEMCACHED_INCREMENT_END(); - return rc; } -memcached_return_t memcached_decrement_by_key(memcached_st *ptr, - const char *group_key, size_t group_key_length, - const char *key, size_t key_length, - uint64_t offset, - uint64_t *value) +static memcached_return_t increment_decrement_with_initial_by_key(const protocol_binary_command command, + memcached_st *memc, + const char *group_key, + size_t group_key_length, + const char *key, + size_t key_length, + uint64_t offset, + uint64_t initial, + time_t expiration, + uint64_t *value) { uint64_t local_value; if (value == NULL) @@ -216,43 +214,85 @@ memcached_return_t memcached_decrement_by_key(memcached_st *ptr, } memcached_return_t rc; - if (memcached_failed(rc= initialize_query(ptr, true))) + if (memcached_failed(rc= initialize_query(memc, true))) { return rc; } - if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1))) + if (memcached_failed(rc= memcached_key_test(*memc, (const char **)&key, &key_length, 1))) { - return rc; + return memcached_last_error(memc); } - - uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length); - memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, server_key); + uint32_t server_key= memcached_generate_hash_with_redistribution(memc, group_key, group_key_length); + memcached_server_write_instance_st instance= memcached_server_instance_fetch(memc, server_key); bool reply= memcached_is_replying(instance->root); - LIBMEMCACHED_MEMCACHED_DECREMENT_START(); - if (memcached_is_binary(ptr)) + if (memcached_is_binary(memc)) { - rc= binary_incr_decr(instance, PROTOCOL_BINARY_CMD_DECREMENT, + rc= binary_incr_decr(instance, command, key, key_length, - offset, 0, MEMCACHED_EXPIRATION_NOT_ADD, + offset, initial, uint32_t(expiration), reply); + } else { - rc= text_incr_decr(instance, false, key, key_length, offset, reply); + rc= memcached_set_error(*memc, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, + memcached_literal_param("memcached_increment_with_initial_by_key() is not supported via the ASCII protocol")); } auto_response(instance, reply, rc, value); + return rc; +} + +memcached_return_t memcached_decrement(memcached_st *memc, + const char *key, size_t key_length, + uint32_t offset, + uint64_t *value) +{ + return memcached_decrement_by_key(memc, key, key_length, key, key_length, offset, value); +} + + +memcached_return_t memcached_increment_by_key(memcached_st *memc, + const char *group_key, size_t group_key_length, + const char *key, size_t key_length, + uint64_t offset, + uint64_t *value) +{ + LIBMEMCACHED_MEMCACHED_INCREMENT_START(); + memcached_return_t rc= increment_decrement_by_key(PROTOCOL_BINARY_CMD_INCREMENT, + memc, + group_key, group_key_length, + key, key_length, + offset, value); + + LIBMEMCACHED_MEMCACHED_INCREMENT_END(); + + return rc; +} + +memcached_return_t memcached_decrement_by_key(memcached_st *memc, + const char *group_key, size_t group_key_length, + const char *key, size_t key_length, + uint64_t offset, + uint64_t *value) +{ + LIBMEMCACHED_MEMCACHED_DECREMENT_START(); + memcached_return_t rc= increment_decrement_by_key(PROTOCOL_BINARY_CMD_DECREMENT, + memc, + group_key, group_key_length, + key, key_length, + offset, value); LIBMEMCACHED_MEMCACHED_DECREMENT_END(); return rc; } -memcached_return_t memcached_increment_with_initial(memcached_st *ptr, +memcached_return_t memcached_increment_with_initial(memcached_st *memc, const char *key, size_t key_length, uint64_t offset, @@ -260,66 +300,33 @@ memcached_return_t memcached_increment_with_initial(memcached_st *ptr, time_t expiration, uint64_t *value) { - return memcached_increment_with_initial_by_key(ptr, key, key_length, + return memcached_increment_with_initial_by_key(memc, key, key_length, key, key_length, offset, initial, expiration, value); } -memcached_return_t memcached_increment_with_initial_by_key(memcached_st *ptr, - const char *group_key, - size_t group_key_length, - const char *key, - size_t key_length, - uint64_t offset, - uint64_t initial, - time_t expiration, - uint64_t *value) +memcached_return_t memcached_increment_with_initial_by_key(memcached_st *memc, + const char *group_key, + size_t group_key_length, + const char *key, + size_t key_length, + uint64_t offset, + uint64_t initial, + time_t expiration, + uint64_t *value) { - uint64_t local_value; - if (value == NULL) - { - value= &local_value; - } - - memcached_return_t rc; - if (memcached_failed(rc= initialize_query(ptr, true))) - { - return rc; - } - - if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1))) - { - return rc; - } - - uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length); - memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, server_key); - - bool reply= memcached_is_replying(instance->root); - LIBMEMCACHED_MEMCACHED_INCREMENT_WITH_INITIAL_START(); - if (memcached_is_binary(ptr)) - { - rc= binary_incr_decr(instance, PROTOCOL_BINARY_CMD_INCREMENT, - key, key_length, - offset, initial, uint32_t(expiration), - reply); - - } - else - { - rc= memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, - memcached_literal_param("memcached_increment_with_initial_by_key() is not supported via the ASCII protocol")); - } - - auto_response(instance, reply, rc, value); - + memcached_return_t rc= increment_decrement_with_initial_by_key(PROTOCOL_BINARY_CMD_INCREMENT, + memc, + group_key, group_key_length, + key, key_length, + offset, initial, expiration, value); LIBMEMCACHED_MEMCACHED_INCREMENT_WITH_INITIAL_END(); return rc; } -memcached_return_t memcached_decrement_with_initial(memcached_st *ptr, +memcached_return_t memcached_decrement_with_initial(memcached_st *memc, const char *key, size_t key_length, uint64_t offset, @@ -327,12 +334,12 @@ memcached_return_t memcached_decrement_with_initial(memcached_st *ptr, time_t expiration, uint64_t *value) { - return memcached_decrement_with_initial_by_key(ptr, key, key_length, + return memcached_decrement_with_initial_by_key(memc, key, key_length, key, key_length, offset, initial, expiration, value); } -memcached_return_t memcached_decrement_with_initial_by_key(memcached_st *ptr, +memcached_return_t memcached_decrement_with_initial_by_key(memcached_st *memc, const char *group_key, size_t group_key_length, const char *key, @@ -342,45 +349,12 @@ memcached_return_t memcached_decrement_with_initial_by_key(memcached_st *ptr, time_t expiration, uint64_t *value) { - uint64_t local_value; - if (value == NULL) - { - value= &local_value; - } - - memcached_return_t rc; - if (memcached_failed(rc= initialize_query(ptr, true))) - { - return rc; - } - - if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1))) - { - return rc; - } - - uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length); - memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, server_key); - - bool reply= memcached_is_replying(instance->root); - - LIBMEMCACHED_MEMCACHED_INCREMENT_WITH_INITIAL_START(); - if (memcached_is_binary(ptr)) - { - rc= binary_incr_decr(instance, PROTOCOL_BINARY_CMD_DECREMENT, - key, key_length, - offset, initial, uint32_t(expiration), - reply); - - } - else - { - rc= memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, - memcached_literal_param("memcached_decrement_with_initial_by_key() is not supported via the ASCII protocol")); - } - - auto_response(instance, reply, rc, value); + memcached_return_t rc= increment_decrement_with_initial_by_key(PROTOCOL_BINARY_CMD_DECREMENT, + memc, + group_key, group_key_length, + key, key_length, + offset, initial, expiration, value); LIBMEMCACHED_MEMCACHED_INCREMENT_WITH_INITIAL_END(); diff --git a/libmemcached/delete.cc b/libmemcached/delete.cc index 1ffdbfac..ea339169 100644 --- a/libmemcached/delete.cc +++ b/libmemcached/delete.cc @@ -146,7 +146,7 @@ memcached_return_t memcached_delete_by_key(memcached_st *ptr, if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1))) { - return rc; + return memcached_last_error(ptr); } if (expiration) diff --git a/libmemcached/server.cc b/libmemcached/server.cc index 2f415844..b742f7ef 100644 --- a/libmemcached/server.cc +++ b/libmemcached/server.cc @@ -285,9 +285,9 @@ memcached_server_instance_st memcached_server_by_key(memcached_st *ptr, return NULL; } - if (memcached_failed(rc= (memcached_key_test(*ptr, (const char **)&key, &key_length, 1)))) + if (memcached_failed((memcached_key_test(*ptr, (const char **)&key, &key_length, 1)))) { - *error= rc; + *error= memcached_last_error(ptr); return NULL; } diff --git a/libmemcached/storage.cc b/libmemcached/storage.cc index e5f67dbc..1b3dbcdd 100644 --- a/libmemcached/storage.cc +++ b/libmemcached/storage.cc @@ -342,9 +342,9 @@ static inline memcached_return_t memcached_send(memcached_st *ptr, return rc; } - if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1))) + if (memcached_failed(memcached_key_test(*ptr, (const char **)&key, &key_length, 1))) { - return rc; + return memcached_last_error(ptr); } uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length);