Updated for help commands (and a little bit on ketama)
[m6w6/libmemcached] / lib / memcached_behavior.c
1 #include "common.h"
2 #include <sys/types.h>
3 #include <sys/socket.h>
4 #include <netinet/tcp.h>
5
6 /*
7 This function is used to modify the behabior of running client.
8
9 We quit all connections so we can reset the sockets.
10 */
11
12 memcached_return memcached_behavior_set(memcached_st *ptr,
13 memcached_behavior flag,
14 void *data)
15 {
16 memcached_flags temp_flag;
17
18 switch (flag)
19 {
20 case MEMCACHED_BEHAVIOR_NO_BLOCK:
21 temp_flag= MEM_NO_BLOCK;
22 case MEMCACHED_BEHAVIOR_TCP_NODELAY:
23 temp_flag= MEM_TCP_NODELAY;
24 case MEMCACHED_BEHAVIOR_MD5_HASHING:
25 temp_flag= MEM_USE_MD5;
26 case MEMCACHED_BEHAVIOR_KETAMA:
27 temp_flag= MEM_USE_KETAMA;
28 {
29 unsigned int *truefalse= (unsigned int *)data;
30 memcached_quit(ptr);
31 if (truefalse)
32 ptr->flags|= temp_flag;
33 else
34 ptr->flags+= temp_flag;
35 break;
36 }
37 }
38
39 return MEMCACHED_SUCCESS;
40 }
41
42 unsigned long long memcached_behavior_get(memcached_st *ptr,
43 memcached_behavior flag)
44 {
45 memcached_flags temp_flag;
46
47 switch (flag)
48 {
49 case MEMCACHED_BEHAVIOR_NO_BLOCK:
50 temp_flag= MEM_NO_BLOCK;
51 case MEMCACHED_BEHAVIOR_TCP_NODELAY:
52 temp_flag= MEM_TCP_NODELAY;
53 case MEMCACHED_BEHAVIOR_MD5_HASHING:
54 temp_flag= MEM_USE_MD5;
55 case MEMCACHED_BEHAVIOR_KETAMA:
56 temp_flag= MEM_USE_KETAMA;
57 if (ptr->flags & temp_flag)
58 return 1;
59 else
60 return 0;
61 }
62
63 return MEMCACHED_SUCCESS;
64 }