X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Finstance.hpp;h=73d74a66c43dfe7ca4dd87b048b74df94b8b10b9;hb=b6719ab469b16022edd830cb90bc476b17fa6743;hp=8f66e96d044b27e467226df0bc1f078e27444377;hpb=c856b49960f8f0f536edb996bf665a0ac40325a3;p=awesomized%2Flibmemcached diff --git a/libmemcached/instance.hpp b/libmemcached/instance.hpp index 8f66e96d..73d74a66 100644 --- a/libmemcached/instance.hpp +++ b/libmemcached/instance.hpp @@ -2,7 +2,7 @@ * * Libmemcached library * - * Copyright (C) 2012 Data Differential, http://datadifferential.com/ + * Copyright (C) 2012-2013 Data Differential, http://datadifferential.com/ * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -56,11 +56,10 @@ # define MEMCACHED_NI_MAXSERV 32 #endif -namespace org { -namespace libmemcached { +#include "libmemcached/string.hpp" // @todo Complete class transformation -struct Instance { +struct memcached_instance_st { in_port_t port() const { return port_; @@ -74,6 +73,7 @@ struct Instance { void mark_server_as_clean() { server_failure_counter= 0; + server_timeout_counter= 0; next_retry= 0; } @@ -91,6 +91,7 @@ struct Instance { void start_close_socket(); void close_socket(); + void reset_socket(); uint32_t response_count() const { @@ -118,6 +119,25 @@ struct Instance { return _revents; } + const char* hostname() + { + return _hostname; + } + + void hostname(const memcached_string_t& hostname_) + { + if (hostname_.size) + { + memcpy(_hostname, hostname_.c_str, hostname_.size); + _hostname[hostname_.size]= 0; + } + else + { + memcpy(_hostname, memcached_literal_param("localhost")); + _hostname[memcached_literal_param_size("localhost")]= 0; + } + } + void events(short); void revents(short); @@ -128,6 +148,8 @@ struct Instance { uint32_t request_id; uint32_t server_failure_counter; uint64_t server_failure_counter_query_id; + uint32_t server_timeout_counter; + uint32_t server_timeout_counter_query_id; uint32_t weight; uint32_t version; enum memcached_server_state_t state; @@ -153,19 +175,26 @@ struct Instance { struct memcached_error_t *error_messages; char read_buffer[MEMCACHED_MAX_BUFFER]; char write_buffer[MEMCACHED_MAX_BUFFER]; - char hostname[MEMCACHED_NI_MAXHOST]; -}; + char _hostname[MEMCACHED_NI_MAXHOST]; -} // namespace libmemcached -} // namespace org + void clear_addrinfo() + { + if (address_info) + { + freeaddrinfo(address_info); + address_info= NULL; + address_info_next= NULL; + } + } +}; -org::libmemcached::Instance* __instance_create_with(memcached_st *memc, - org::libmemcached::Instance* self, - const memcached_string_t& hostname, - const in_port_t port, - uint32_t weight, - const memcached_connection_t type); +memcached_instance_st* __instance_create_with(memcached_st *memc, + memcached_instance_st* self, + const memcached_string_t& _hostname, + const in_port_t port, + uint32_t weight, + const memcached_connection_t type); -memcached_return_t memcached_instance_push(memcached_st *ptr, const org::libmemcached::Instance*, uint32_t); +memcached_return_t memcached_instance_push(memcached_st *ptr, const memcached_instance_st*, uint32_t); -void __instance_free(org::libmemcached::Instance *); +void __instance_free(memcached_instance_st *);