bool is_allocated:1;
bool is_initialized:1;
bool is_purging:1;
+ bool is_processing_input:1;
} options;
memcached_server_distribution_t distribution;
memcached_hash_t hash;
- uint32_t continuum_points_counter;
- memcached_server_st *hosts;
+ uint32_t continuum_points_counter; // Ketama
+ memcached_server_st *servers;
memcached_server_st *last_disconnected_server;
int32_t snd_timeout;
int32_t rcv_timeout;
uint32_t io_bytes_watermark;
uint32_t io_key_prefetch;
uint32_t number_of_hosts;
- uint32_t cursor_server;
int cached_errno;
+ /**
+ @note these are static and should not change without a call to behavior.
+ */
struct {
bool auto_eject_hosts:1;
bool binary_protocol:1;
int32_t poll_timeout;
int32_t connect_timeout;
int32_t retry_timeout;
- uint32_t continuum_count;
+ uint32_t continuum_count; // Ketama
int send_size;
int recv_size;
void *user_data;
- time_t next_distribution_rebuild;
+ time_t next_distribution_rebuild; // Ketama
size_t prefix_key_length;
uint32_t number_of_replicas;
memcached_hash_t distribution_hash;
memcached_result_st result;
- memcached_continuum_item_st *continuum;
+ memcached_continuum_item_st *continuum; // Ketama
memcached_clone_fn on_clone;
memcached_cleanup_fn on_cleanup;
memcached_free_fn call_free;
LIBMEMCACHED_API
memcached_return_t memcached_version(memcached_st *ptr);
+LIBMEMCACHED_API
+void memcached_servers_reset(memcached_st *ptr);
+
+// Local Only Inline
+static inline memcached_server_st *memcached_server_instance_fetch(memcached_st *ptr, uint32_t server_key)
+{
+ return &ptr->servers[server_key];
+}
+
/* Public API */
LIBMEMCACHED_API