+static const memcached_st global_copy= {
+ .state= {
+ .is_purging= false,
+ .is_processing_input= false,
+ },
+ .flags= {
+ .auto_eject_hosts= false,
+ .binary_protocol= false,
+ .buffer_requests= false,
+ .cork= false,
+ .hash_with_prefix_key= false,
+ .ketama_weighted= false,
+ .no_block= false,
+ .no_reply= false,
+ .randomize_replica_read= false,
+ .reuse_memory= false,
+ .support_cas= false,
+ .tcp_nodelay= false,
+ .use_cache_lookups= false,
+ .use_sort_hosts= false,
+ .use_udp= false,
+ .verify_key= false
+ }
+};
+
+static inline void _memcached_init(memcached_st *self)
+{
+ self->state= global_copy.state;
+ self->flags= global_copy.flags;
+
+ self->distribution= MEMCACHED_DISTRIBUTION_MODULA;
+ self->hash= MEMCACHED_HASH_DEFAULT;
+ self->continuum_points_counter= 0;
+
+ self->number_of_hosts= 0;
+ self->servers= NULL;
+ self->last_disconnected_server= NULL;
+
+ self->snd_timeout= 0;
+ self->rcv_timeout= 0;
+ self->server_failure_limit= 0;
+
+ /* TODO, Document why we picked these defaults */
+ self->io_msg_watermark= 500;
+ self->io_bytes_watermark= 65 * 1024;
+
+ self->io_key_prefetch= 0;
+ self->cached_errno= 0;
+ self->poll_timeout= MEMCACHED_DEFAULT_TIMEOUT;
+ self->connect_timeout= MEMCACHED_DEFAULT_TIMEOUT;
+ self->retry_timeout= 0;
+ self->continuum_count= 0;
+
+ self->send_size= -1;
+ self->recv_size= -1;
+
+ self->user_data= NULL;
+ self->next_distribution_rebuild= 0;
+ self->prefix_key_length= 0;
+ self->number_of_replicas= 0;
+ self->distribution_hash= MEMCACHED_HASH_DEFAULT;
+ self->continuum= NULL;
+
+
+ memcached_set_memory_allocators(self, NULL, NULL, NULL, NULL, NULL);
+ self->allocators= memcached_allocators_return_default();
+
+ self->on_clone= NULL;
+ self->on_cleanup= NULL;
+ self->get_key_failure= NULL;
+ self->delete_trigger= NULL;
+ self->callbacks= NULL;
+}
+