X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fserver.hpp;h=6ea0b7f2007b5ced75da0f77d584a633ea6cae7e;hb=770d4f6b4cc99bff87d27f4cbe52b2c6a2f2fbd2;hp=8cbdc15108b243a1029a8f2ba93648cccab00027;hpb=6b04196d0ea6aa9fcd2a6c14a6cb5733c34aa2d2;p=awesomized%2Flibmemcached diff --git a/libmemcached/server.hpp b/libmemcached/server.hpp index 8cbdc151..6ea0b7f2 100644 --- a/libmemcached/server.hpp +++ b/libmemcached/server.hpp @@ -68,30 +68,39 @@ static inline bool memcached_is_valid_filename(const memcached_string_t& arg) return arg.c_str != NULL and arg.size > 0 and arg.size < MEMCACHED_NI_MAXHOST; } -void memcached_instance_free(org::libmemcached::Instance *); +void memcached_instance_free(memcached_instance_st *); -void set_last_disconnected_host(org::libmemcached::Instance* self); +void set_last_disconnected_host(memcached_instance_st* self); -static inline void memcached_mark_server_for_timeout(org::libmemcached::Instance* server) +static inline void memcached_mark_server_for_timeout(memcached_instance_st* server) { if (server->state != MEMCACHED_SERVER_STATE_IN_TIMEOUT) { - struct timeval next_time; - if (gettimeofday(&next_time, NULL) == 0) + if (server->server_timeout_counter_query_id != server->root->query_id) { - server->next_retry= next_time.tv_sec +server->root->retry_timeout; - } - else - { - server->next_retry= 1; // Setting the value to 1 causes the timeout to occur immediatly + server->server_timeout_counter++; + server->server_timeout_counter_query_id= server->root->query_id; } - server->state= MEMCACHED_SERVER_STATE_IN_TIMEOUT; - if (server->server_failure_counter_query_id != server->root->query_id) + if (server->server_timeout_counter >= server->root->server_timeout_limit) { - server->server_failure_counter++; - server->server_failure_counter_query_id= server->root->query_id; + struct timeval next_time; + if (gettimeofday(&next_time, NULL) == 0) + { + server->next_retry= next_time.tv_sec +server->root->retry_timeout; + } + else + { + server->next_retry= 1; // Setting the value to 1 causes the timeout to occur immediatly + } + + server->state= MEMCACHED_SERVER_STATE_IN_TIMEOUT; + if (server->server_failure_counter_query_id != server->root->query_id) + { + server->server_failure_counter++; + server->server_failure_counter_query_id= server->root->query_id; + } + set_last_disconnected_host(server); } - set_last_disconnected_host(server); } }