X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Finstance.hpp;h=097d350097d96578beeff4be78d9298ce62e3d66;hb=96fd17942838d7c2943334da9e7616e56c613595;hp=e8d44058a535dffa75ca0a6a3c5fb233f35786af;hpb=facfe08e21d2c3135c508ff098ff603ddaacef3e;p=m6w6%2Flibmemcached diff --git a/libmemcached/instance.hpp b/libmemcached/instance.hpp index e8d44058..097d3500 100644 --- a/libmemcached/instance.hpp +++ b/libmemcached/instance.hpp @@ -38,6 +38,120 @@ #pragma once +#ifndef WIN32 +# ifdef HAVE_NETDB_H +# include +# endif +#endif + +#ifdef NI_MAXHOST +# define MEMCACHED_NI_MAXHOST NI_MAXHOST +#else +# define MEMCACHED_NI_MAXHOST 1025 +#endif + +#ifdef NI_MAXSERV +# define MEMCACHED_NI_MAXSERV NI_MAXSERV +#else +# define MEMCACHED_NI_MAXSERV 32 +#endif + +namespace org { +namespace libmemcached { + +// @todo Complete class transformation +struct Instance { + in_port_t port() const + { + return port_; + } + + void port(in_port_t arg) + { + port_= arg; + } + + void mark_server_as_clean() + { + server_failure_counter= 0; + next_retry= 0; + } + + void disable() + { + } + + void enable() + { + } + + uint32_t response_count() const + { + return cursor_active_; + } + + struct { + bool is_allocated; + bool is_initialized; + bool is_shutting_down; + bool is_dead; + bool ready; + } options; + + short _events; + short _revents; + + short events(void) + { + return _events; + } + + short revents(void) + { + return _revents; + } + + void events(short); + void revents(short); + + uint32_t cursor_active_; + in_port_t port_; + memcached_socket_t fd; + uint32_t io_bytes_sent; /* # bytes sent since last read */ + uint32_t request_id; + uint32_t server_failure_counter; + uint64_t server_failure_counter_query_id; + uint32_t weight; + uint32_t version; + enum memcached_server_state_t state; + struct { + uint32_t read; + uint32_t write; + uint32_t timeouts; + size_t _bytes_read; + } io_wait_count; + uint8_t major_version; // Default definition of UINT8_MAX means that it has not been set. + uint8_t micro_version; // ditto, and note that this is the third, not second version bit + uint8_t minor_version; // ditto + memcached_connection_t type; + char *read_ptr; + size_t read_buffer_length; + size_t read_data_length; + size_t write_buffer_offset; + struct addrinfo *address_info; + struct addrinfo *address_info_next; + time_t next_retry; + struct memcached_st *root; + uint64_t limit_maxbytes; + struct memcached_error_t *error_messages; + char read_buffer[MEMCACHED_MAX_BUFFER]; + char write_buffer[MEMCACHED_MAX_BUFFER]; + char hostname[MEMCACHED_NI_MAXHOST]; +}; + +} // namespace libmemcached +} // namespace org + org::libmemcached::Instance* __instance_create_with(memcached_st *memc, org::libmemcached::Instance* self, const memcached_string_t& hostname, @@ -45,14 +159,6 @@ org::libmemcached::Instance* __instance_create_with(memcached_st *memc, uint32_t weight, const memcached_connection_t type); -const char *memcached_instance_name(const org::libmemcached::Instance* self); - -in_port_t memcached_instance_port(const org::libmemcached::Instance* self); - memcached_return_t memcached_instance_push(memcached_st *ptr, const org::libmemcached::Instance*, uint32_t); -memcached_server_st *memcached_instance_2_server(org::libmemcached::Instance* source); - -uint32_t memcached_instance_response_count(const org::libmemcached::Instance* self); - void __instance_free(org::libmemcached::Instance *);