#include "common.h"
-memcached_return_t memcached_verbosity(memcached_st *ptr, unsigned int verbosity)
+struct context_st
+{
+ size_t length;
+ const char *buffer;
+};
+
+static memcached_return_t _set_verbosity(const memcached_st *ptr,
+ const memcached_server_st *server,
+ void *context)
{
- uint32_t x;
- size_t send_length;
memcached_return_t rc;
+ memcached_st local_memc;
+ memcached_st *memc_ptr;
char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
- send_length= (size_t) snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE,
- "verbosity %u\r\n", verbosity);
- unlikely (send_length >= MEMCACHED_DEFAULT_COMMAND_SIZE)
- return MEMCACHED_WRITE_FAILURE;
+ struct context_st *execute= (struct context_st *)context;
+ (void)ptr;
+
+ memc_ptr= memcached_create(&local_memc);
+
+ rc= memcached_server_add(memc_ptr, memcached_server_name(server), memcached_server_port(server));
- rc= MEMCACHED_SUCCESS;
- for (x= 0; x < memcached_server_count(ptr); x++)
+ if (rc == MEMCACHED_SUCCESS)
{
- memcached_return_t rrc;
- memcached_server_instance_st *instance=
- memcached_server_instance_fetch(ptr, x);
+ memcached_server_write_instance_st instance=
+ memcached_server_instance_fetch(memc_ptr, 0);
- rrc= memcached_do(instance, buffer, send_length, 1);
- if (rrc != MEMCACHED_SUCCESS)
+ rc= memcached_do(instance, execute->buffer, execute->length, true);
+
+ if (rc == MEMCACHED_SUCCESS)
{
- rc= MEMCACHED_SOME_ERRORS;
- continue;
+ rc= memcached_response(instance, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
}
-
- unlikely (ptr->flags.use_udp)
- continue;
-
- rrc= memcached_response(instance, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
- if (rrc != MEMCACHED_SUCCESS)
- rc= MEMCACHED_SOME_ERRORS;
}
+ memcached_free(memc_ptr);
+
return rc;
}
+
+memcached_return_t memcached_verbosity(memcached_st *ptr, uint32_t verbosity)
+{
+ int send_length;
+ memcached_server_fn callbacks[1];
+
+ char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
+
+ send_length= snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE,
+ "verbosity %u\r\n", verbosity);
+ if (send_length >= MEMCACHED_DEFAULT_COMMAND_SIZE || send_length < 0)
+ return MEMCACHED_WRITE_FAILURE;
+
+ struct context_st context = { .length= (size_t)send_length, .buffer= buffer };
+
+ callbacks[0]= _set_verbosity;
+
+ return memcached_server_cursor(ptr, callbacks, &context, 1);
+}