-
-memcached_return_t memcached_server_remove(memcached_server_st *st_ptr)
-{
- uint32_t x, host_index;
- memcached_st *ptr= st_ptr->root;
- memcached_server_st *list= memcached_server_list(ptr);
-
- for (x= 0, host_index= 0; x < memcached_server_count(ptr); x++)
- {
- if (strncmp(list[x].hostname, st_ptr->hostname, MEMCACHED_MAX_HOST_LENGTH) != 0 || list[x].port != st_ptr->port)
- {
- if (host_index != x)
- memcpy(list+host_index, list+x, sizeof(memcached_server_st));
- host_index++;
- }
- }
- ptr->number_of_hosts= host_index;
-
- if (st_ptr->address_info)
- {
- freeaddrinfo(st_ptr->address_info);
- st_ptr->address_info= NULL;
- }
- run_distribution(ptr);
-
- return MEMCACHED_SUCCESS;
-}
-
-memcached_server_st *memcached_server_list_append(memcached_server_st *ptr,
- const char *hostname, in_port_t port,
- memcached_return_t *error)
-{
- return memcached_server_list_append_with_weight(ptr, hostname, port, 0, error);
-}
-
-memcached_server_st *memcached_server_list_append_with_weight(memcached_server_st *ptr,
- const char *hostname, in_port_t port,
- uint32_t weight,
- memcached_return_t *error)
-{
- unsigned int count;
- memcached_server_instance_st *new_host_list;
-
- if (hostname == NULL || error == NULL)
- return NULL;
-
- if (! port)
- port= MEMCACHED_DEFAULT_PORT;
-
- /* Increment count for hosts */
- count= 1;
- if (ptr != NULL)
- {
- count+= memcached_servers_count(ptr);
- }
-
- new_host_list= (memcached_server_instance_st *)realloc(ptr, sizeof(memcached_server_instance_st) * count);
- if (!new_host_list)
- {
- *error= MEMCACHED_MEMORY_ALLOCATION_FAILURE;
- return NULL;
- }
-
- /* TODO: Check return type */
- memcached_server_create_with(NULL, &new_host_list[count-1], hostname, port, weight, MEMCACHED_CONNECTION_TCP);
-
- /* Backwards compatibility hack */
- memcached_servers_set_count(new_host_list, count);
-
- *error= MEMCACHED_SUCCESS;
- return new_host_list;
-}