X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fpurge.cc;h=4dbe24d05cb090e733f6d1a07d2b197c92d28af3;hb=0246c3f543a3aff173a68db275ad64852410cc2d;hp=b45e02a4a67738957498137f2177b9acf80e4788;hpb=674c7578fa870c3b57e81e765c355ce98434b310;p=awesomized%2Flibmemcached diff --git a/libmemcached/purge.cc b/libmemcached/purge.cc index b45e02a4..4dbe24d0 100644 --- a/libmemcached/purge.cc +++ b/libmemcached/purge.cc @@ -44,7 +44,7 @@ class Purge { public: - Purge(memcached_st* arg) : + Purge(Memcached* arg) : _memc(arg) { memcached_set_purging(_memc, true); @@ -56,13 +56,13 @@ public: } private: - memcached_st* _memc; + Memcached* _memc; }; class PollTimeout { public: - PollTimeout(memcached_st* arg) : + PollTimeout(Memcached* arg) : _timeout(arg->poll_timeout), _origin(arg->poll_timeout) { @@ -79,9 +79,9 @@ private: int32_t& _origin; }; -bool memcached_purge(org::libmemcached::Instance* ptr) +bool memcached_purge(memcached_instance_st* ptr) { - memcached_st *root= (memcached_st *)ptr->root; + Memcached *root= (Memcached *)ptr->root; if (memcached_is_purging(ptr->root) || /* already purging */ (memcached_server_response_count(ptr) < ptr->root->io_msg_watermark && @@ -105,14 +105,15 @@ bool memcached_purge(org::libmemcached::Instance* ptr) */ if (memcached_io_write(ptr) == false) { + memcached_io_reset(ptr); memcached_set_error(*ptr, MEMCACHED_WRITE_FAILURE, MEMCACHED_AT); return false; } WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET); bool is_successful= true; - uint32_t no_msg= memcached_server_response_count(ptr) - 1; - if (no_msg > 0) + uint32_t no_msg= memcached_server_response_count(ptr); + if (no_msg > 1) { memcached_result_st result; @@ -126,7 +127,7 @@ bool memcached_purge(org::libmemcached::Instance* ptr) memcached_result_st* result_ptr= memcached_result_create(root, &result); assert(result_ptr); - for (uint32_t x= 0; x < no_msg; x++) + for (uint32_t x= 0; x < no_msg - 1; x++) { memcached_result_reset(result_ptr); memcached_return_t rc= memcached_read_one_response(ptr, result_ptr); @@ -138,7 +139,6 @@ bool memcached_purge(org::libmemcached::Instance* ptr) if (rc== MEMCACHED_PROTOCOL_ERROR or rc == MEMCACHED_UNKNOWN_READ_FAILURE or rc == MEMCACHED_READ_FAILURE) { WATCHPOINT_ERROR(rc); - memcached_io_reset(ptr); is_successful= false; }