{
self->options.is_shutting_down= false;
self->options.is_dead= false;
- self->number_of_hosts= 0;
self->cursor_active_= 0;
self->port_= port;
self->fd= INVALID_SOCKET;
self->address_info= NULL;
self->address_info_next= NULL;
}
+ assert(self->address_info_next == NULL);
memcached_error_free(*self);
void set_last_disconnected_host(org::libmemcached::Instance* self)
{
assert(self->root);
- if (self->root == NULL)
+ if (self->root)
{
- return;
- }
+ if (memcached_server_get_last_disconnect(self->root) and
+ memcached_server_get_last_disconnect(self->root)->version == self->version)
+ {
+ return;
+ }
- if (memcached_server_get_last_disconnect(self->root) and
- memcached_server_get_last_disconnect(self->root)->version == self->version)
- {
- return;
- }
+ // const_cast
+ memcached_st *root= (memcached_st *)self->root;
+
+ memcached_instance_free((org::libmemcached::Instance*)(root->last_disconnected_server));
- // const_cast
- memcached_st *root= (memcached_st *)self->root;
+ // We set is_parsing so that no lookup happens
+ root->state.is_parsing= true;
+ root->last_disconnected_server= memcached_instance_clone(self);
+ root->state.is_parsing= false;
- memcached_instance_free((org::libmemcached::Instance*)(root->last_disconnected_server));
- root->last_disconnected_server= memcached_instance_clone(self);
- ((org::libmemcached::Instance*)memcached_server_get_last_disconnect(root))->version= self->version;
+ ((org::libmemcached::Instance*)memcached_server_get_last_disconnect(root))->version= self->version;
+ }
}
memcached_server_instance_st memcached_server_get_last_disconnect(const memcached_st *self)
return (memcached_server_instance_st)self->last_disconnected_server;
}
-uint32_t memcached_instance_set_count(org::libmemcached::Instance* servers, uint32_t count)
-{
- WATCHPOINT_ASSERT(servers);
- if (servers == NULL)
- {
- return 0;
- }
-
- return servers->number_of_hosts= count;
-}
-
const char *memcached_instance_name(const memcached_server_instance_st self)
{
WATCHPOINT_ASSERT(self);