New version update
[m6w6/libmemcached] / libmemcached / memcached_callback.c
1 #include "common.h"
2 #include <sys/types.h>
3 #include <sys/socket.h>
4 #include <netinet/tcp.h>
5
6 /*
7 These functions provide data and function callback support
8 */
9
10 memcached_return memcached_callback_set(memcached_st *ptr,
11 memcached_callback flag,
12 void *data)
13 {
14 switch (flag)
15 {
16 case MEMCACHED_CALLBACK_USER_DATA:
17 {
18 ptr->user_data= data;
19 break;
20 }
21 case MEMCACHED_CALLBACK_CLEANUP_FUNCTION:
22 {
23 memcached_cleanup_func func= (memcached_cleanup_func)data;
24 ptr->on_cleanup= func;
25 break;
26 }
27 case MEMCACHED_CALLBACK_CLONE_FUNCTION:
28 {
29 memcached_clone_func func= (memcached_clone_func)data;
30 ptr->on_clone= func;
31 break;
32 }
33 case MEMCACHED_CALLBACK_MALLOC_FUNCTION:
34 {
35 memcached_malloc_function func= (memcached_malloc_function)data;
36 ptr->call_malloc= func;
37 break;
38 }
39 case MEMCACHED_CALLBACK_REALLOC_FUNCTION:
40 {
41 memcached_realloc_function func= (memcached_realloc_function)data;
42 ptr->call_realloc= func;
43 break;
44 }
45 case MEMCACHED_CALLBACK_FREE_FUNCTION:
46 {
47 memcached_free_function func= (memcached_free_function)data;
48 ptr->call_free= func;
49 break;
50 }
51 case MEMCACHED_CALLBACK_GET_FAILURE:
52 {
53 memcached_trigger_key func= (memcached_trigger_key)data;
54 ptr->get_key_failure= func;
55 break;
56 }
57 default:
58 return MEMCACHED_FAILURE;
59 }
60
61 return MEMCACHED_SUCCESS;
62 }
63
64 void *memcached_callback_get(memcached_st *ptr,
65 memcached_callback flag,
66 memcached_return *error)
67 {
68 memcached_return local_error;
69 if (!error)
70 error = &local_error;
71
72 switch (flag)
73 {
74 case MEMCACHED_CALLBACK_USER_DATA:
75 {
76 *error= ptr->user_data ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
77 return (void *)ptr->user_data;
78 }
79 case MEMCACHED_CALLBACK_CLEANUP_FUNCTION:
80 {
81 *error= ptr->on_cleanup ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
82 return (void *)ptr->on_cleanup;
83 }
84 case MEMCACHED_CALLBACK_CLONE_FUNCTION:
85 {
86 *error= ptr->on_clone ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
87 return (void *)ptr->on_clone;
88 }
89 case MEMCACHED_CALLBACK_MALLOC_FUNCTION:
90 {
91 *error= ptr->call_malloc ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
92 return (void *)ptr->call_malloc;
93 }
94 case MEMCACHED_CALLBACK_REALLOC_FUNCTION:
95 {
96 *error= ptr->call_realloc ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
97 return (void *)ptr->call_realloc;
98 }
99 case MEMCACHED_CALLBACK_FREE_FUNCTION:
100 {
101 *error= ptr->call_free ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
102 return (void *)ptr->call_free;
103 }
104 case MEMCACHED_CALLBACK_GET_FAILURE:
105 {
106 *error= ptr->get_key_failure ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
107 return (void *)ptr->get_key_failure;
108 }
109 default:
110 WATCHPOINT_ASSERT(0);
111 *error= MEMCACHED_FAILURE;
112 return NULL;
113 }
114 }