summaryrefslogtreecommitdiff
path: root/libmemcached/response.cc
diff options
context:
space:
mode:
authorBrian Aker <brian@tangent.org>2011-12-26 20:32:16 -0800
committerBrian Aker <brian@tangent.org>2011-12-26 20:32:16 -0800
commit06d0eaed5e274bc0ba93a3a61788a4bab480adf2 (patch)
tree1ac118de603ee0a59962864a7132274896bc2d13 /libmemcached/response.cc
parent5324b449dff573050ce809dc2843acfc01ec233b (diff)
downloadlibmemcached-06d0eaed5e274bc0ba93a3a61788a4bab480adf2.tar.gz
Have incr/decr use the number the parser for asci finds.
Diffstat (limited to 'libmemcached/response.cc')
-rw-r--r--libmemcached/response.cc32
1 files changed, 28 insertions, 4 deletions
diff --git a/libmemcached/response.cc b/libmemcached/response.cc
index d88ccfbf..35a9f74d 100644
--- a/libmemcached/response.cc
+++ b/libmemcached/response.cc
@@ -187,8 +187,10 @@ read_error:
static memcached_return_t textual_read_one_response(memcached_server_write_instance_st ptr,
char *buffer, size_t buffer_length,
- memcached_result_st *result)
+ memcached_result_st *result,
+ uint64_t& numeric_value)
{
+ numeric_value= UINT64_MAX;
size_t total_read;
memcached_return_t rc= memcached_io_readline(ptr, buffer, buffer_length, total_read);
@@ -350,6 +352,8 @@ static memcached_return_t textual_read_one_response(memcached_server_write_insta
return MEMCACHED_UNKNOWN_READ_FAILURE;
}
+ numeric_value= uint64_t(auto_return_value);
+
WATCHPOINT_STRING(buffer);
return MEMCACHED_SUCCESS;
}
@@ -646,6 +650,16 @@ memcached_return_t memcached_read_one_response(memcached_server_write_instance_s
char *buffer, size_t buffer_length,
memcached_result_st *result)
{
+ uint64_t numeric_value;
+
+ return memcached_read_one_response(ptr, buffer, buffer_length, result, numeric_value);
+}
+
+memcached_return_t memcached_read_one_response(memcached_server_write_instance_st ptr,
+ char *buffer, size_t buffer_length,
+ memcached_result_st *result,
+ uint64_t& numeric_value)
+{
memcached_server_response_decrement(ptr);
if (result == NULL)
@@ -661,7 +675,7 @@ memcached_return_t memcached_read_one_response(memcached_server_write_instance_s
}
else
{
- rc= textual_read_one_response(ptr, buffer, buffer_length, result);
+ rc= textual_read_one_response(ptr, buffer, buffer_length, result, numeric_value);
}
if (rc == MEMCACHED_UNKNOWN_READ_FAILURE or
@@ -680,6 +694,16 @@ memcached_return_t memcached_response(memcached_server_write_instance_st ptr,
char *buffer, size_t buffer_length,
memcached_result_st *result)
{
+ uint64_t numeric_value;
+
+ return memcached_response(ptr, buffer, buffer_length, result, numeric_value);
+}
+
+memcached_return_t memcached_response(memcached_server_write_instance_st ptr,
+ char *buffer, size_t buffer_length,
+ memcached_result_st *result,
+ uint64_t& numeric_value)
+{
/* We may have old commands in the buffer not set, first purge */
if ((ptr->root->flags.no_block) && (memcached_is_processing_input(ptr->root) == false))
{
@@ -695,7 +719,7 @@ memcached_return_t memcached_response(memcached_server_write_instance_st ptr,
{
while (memcached_server_response_count(ptr) > 1)
{
- memcached_return_t rc= memcached_read_one_response(ptr, buffer, buffer_length, result);
+ memcached_return_t rc= memcached_read_one_response(ptr, buffer, buffer_length, result, numeric_value);
if (rc != MEMCACHED_END &&
rc != MEMCACHED_STORED &&
@@ -711,5 +735,5 @@ memcached_return_t memcached_response(memcached_server_write_instance_st ptr,
}
}
- return memcached_read_one_response(ptr, buffer, buffer_length, result);
+ return memcached_read_one_response(ptr, buffer, buffer_length, result, numeric_value);
}