X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Finstance.hpp;h=73d74a66c43dfe7ca4dd87b048b74df94b8b10b9;hb=dc1e22ba362663bf052e7cfbbdf933bb462a7006;hp=097d350097d96578beeff4be78d9298ce62e3d66;hpb=96fd17942838d7c2943334da9e7616e56c613595;p=awesomized%2Flibmemcached diff --git a/libmemcached/instance.hpp b/libmemcached/instance.hpp index 097d3500..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; } @@ -85,6 +85,14 @@ struct Instance { { } + bool valid() const; + + bool is_shutting_down() const; + + void start_close_socket(); + void close_socket(); + void reset_socket(); + uint32_t response_count() const { return cursor_active_; @@ -111,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); @@ -121,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; @@ -146,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 *);