Merge in updates (including removal of some depcrated bits from the examples).
[awesomized/libmemcached] / libmemcached / verbosity.c
1 #include "common.h"
2
3 struct context_st
4 {
5 size_t length;
6 const char *buffer;
7 };
8
9 static memcached_return_t _set_verbosity(const memcached_st *ptr,
10 const memcached_server_st *server,
11 void *context)
12 {
13 memcached_return_t rc;
14 memcached_st local_memc;
15 memcached_st *memc_ptr;
16 char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
17
18 struct context_st *execute= (struct context_st *)context;
19 (void)ptr;
20
21 memc_ptr= memcached_create(&local_memc);
22
23 rc= memcached_server_add(memc_ptr, memcached_server_name(server), memcached_server_port(server));
24
25 if (rc == MEMCACHED_SUCCESS)
26 {
27 memcached_server_write_instance_st instance=
28 memcached_server_instance_fetch(memc_ptr, 0);
29
30 rc= memcached_do(instance, execute->buffer, execute->length, true);
31
32 if (rc == MEMCACHED_SUCCESS)
33 {
34 rc= memcached_response(instance, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
35 }
36 }
37
38 memcached_free(memc_ptr);
39
40 return rc;
41 }
42
43 memcached_return_t memcached_verbosity(memcached_st *ptr, uint32_t verbosity)
44 {
45 int send_length;
46 memcached_server_fn callbacks[1];
47
48 char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
49
50 send_length= snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE,
51 "verbosity %u\r\n", verbosity);
52 if (send_length >= MEMCACHED_DEFAULT_COMMAND_SIZE || send_length < 0)
53 return MEMCACHED_WRITE_FAILURE;
54
55 struct context_st context = { .length= (size_t)send_length, .buffer= buffer };
56
57 callbacks[0]= _set_verbosity;
58
59 return memcached_server_cursor(ptr, callbacks, &context, 1);
60 }