Finished up memcached_behavior_set/get() method. Tests and examples found in
[awesomized/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 switch (flag)
17 {
18 case MEMCACHED_BEHAVIOR_NO_BLOCK:
19 {
20 unsigned int *truefalse= (unsigned int *)data;
21 memcached_quit(ptr);
22 if (truefalse)
23 ptr->flags|= MEM_NO_BLOCK;
24 else
25 ptr->flags+= MEM_NO_BLOCK;
26 break;
27 }
28
29 case MEMCACHED_BEHAVIOR_TCP_NODELAY:
30 {
31 unsigned int *truefalse= (unsigned int *)data;
32 memcached_quit(ptr);
33 if (truefalse)
34 ptr->flags|= MEM_TCP_NODELAY;
35 else
36 ptr->flags+= MEM_TCP_NODELAY;
37 break;
38 }
39
40 case MEMCACHED_BEHAVIOR_MD5_HASHING:
41 ptr->flags+= MEM_USE_MD5;
42 break;
43 }
44
45 return MEMCACHED_SUCCESS;
46 }
47
48 unsigned long long memcached_behavior_get(memcached_st *ptr,
49 memcached_behavior flag)
50 {
51 switch (flag)
52 {
53 case MEMCACHED_BEHAVIOR_NO_BLOCK:
54 if (ptr->flags & MEM_NO_BLOCK)
55 return 1;
56 else
57 return 0;
58 case MEMCACHED_BEHAVIOR_TCP_NODELAY:
59 if (ptr->flags & MEM_TCP_NODELAY)
60 return 1;
61 else
62 return 0;
63 case MEMCACHED_BEHAVIOR_MD5_HASHING:
64 if (ptr->flags & MEM_USE_MD5)
65 return 1;
66 else
67 return 0;
68 }
69
70 return MEMCACHED_SUCCESS;
71 }