First pass on updating docs.
[awesomized/libmemcached] / libmemcached / callback.c
1 /* LibMemcached
2 * Copyright (C) 2006-2009 Brian Aker
3 * All rights reserved.
4 *
5 * Use and distribution licensed under the BSD license. See
6 * the COPYING file in the parent directory for full text.
7 *
8 * Summary: Change any of the possible callbacks.
9 *
10 */
11
12 #include "libmemcached/common.h"
13 #include <sys/types.h>
14
15 /*
16 These functions provide data and function callback support
17 */
18
19 memcached_return_t memcached_callback_set(memcached_st *ptr,
20 const memcached_callback_t flag,
21 void *data)
22 {
23 switch (flag)
24 {
25 case MEMCACHED_CALLBACK_PREFIX_KEY:
26 {
27 return memcached_set_prefix_key(ptr, (char*)data, data ? strlen((char*)data) : 0);
28 }
29 case MEMCACHED_CALLBACK_USER_DATA:
30 {
31 ptr->user_data= data;
32 break;
33 }
34 case MEMCACHED_CALLBACK_CLEANUP_FUNCTION:
35 {
36 memcached_cleanup_fn func= *(memcached_cleanup_fn *)&data;
37 ptr->on_cleanup= func;
38 break;
39 }
40 case MEMCACHED_CALLBACK_CLONE_FUNCTION:
41 {
42 memcached_clone_fn func= *(memcached_clone_fn *)&data;
43 ptr->on_clone= func;
44 break;
45 }
46 #ifdef MEMCACHED_ENABLE_DEPRECATED
47 case MEMCACHED_CALLBACK_MALLOC_FUNCTION:
48 {
49 memcached_malloc_function func= *(memcached_malloc_fn *)&data;
50 ptr->call_malloc= func;
51 break;
52 }
53 case MEMCACHED_CALLBACK_REALLOC_FUNCTION:
54 {
55 memcached_realloc_function func= *(memcached_realloc_fn *)&data;
56 ptr->call_realloc= func;
57 break;
58 }
59 case MEMCACHED_CALLBACK_FREE_FUNCTION:
60 {
61 memcached_free_function func= *(memcached_free_fn *)&data;
62 ptr->call_free= func;
63 break;
64 }
65 #endif
66 case MEMCACHED_CALLBACK_GET_FAILURE:
67 {
68 memcached_trigger_key_fn func= *(memcached_trigger_key_fn *)&data;
69 ptr->get_key_failure= func;
70 break;
71 }
72 case MEMCACHED_CALLBACK_DELETE_TRIGGER:
73 {
74 memcached_trigger_delete_key_fn func= *(memcached_trigger_delete_key_fn *)&data;
75 ptr->delete_trigger= func;
76 break;
77 }
78 case MEMCACHED_CALLBACK_MAX:
79 default:
80 return MEMCACHED_FAILURE;
81 }
82
83 return MEMCACHED_SUCCESS;
84 }
85
86 void *memcached_callback_get(memcached_st *ptr,
87 const memcached_callback_t flag,
88 memcached_return_t *error)
89 {
90 memcached_return_t local_error;
91
92 if (!error)
93 error = &local_error;
94
95 switch (flag)
96 {
97 case MEMCACHED_CALLBACK_PREFIX_KEY:
98 {
99 if (ptr->prefix_key)
100 {
101 *error= MEMCACHED_SUCCESS;
102 return (void *)memcached_array_string(ptr->prefix_key);
103 }
104 else
105 {
106 *error= MEMCACHED_FAILURE;
107 return NULL;
108 }
109 }
110 case MEMCACHED_CALLBACK_USER_DATA:
111 {
112 *error= ptr->user_data ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
113 return (void *)ptr->user_data;
114 }
115 case MEMCACHED_CALLBACK_CLEANUP_FUNCTION:
116 {
117 *error= ptr->on_cleanup ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
118 return *(void **)&ptr->on_cleanup;
119 }
120 case MEMCACHED_CALLBACK_CLONE_FUNCTION:
121 {
122 *error= ptr->on_clone ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
123 return *(void **)&ptr->on_clone;
124 }
125 #ifdef MEMCACHED_ENABLE_DEPRECATED
126 case MEMCACHED_CALLBACK_MALLOC_FUNCTION:
127 {
128 *error= ptr->call_malloc ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
129 return *(void **)&ptr->call_malloc;
130 }
131 case MEMCACHED_CALLBACK_REALLOC_FUNCTION:
132 {
133 *error= ptr->call_realloc ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
134 return *(void **)&ptr->call_realloc;
135 }
136 case MEMCACHED_CALLBACK_FREE_FUNCTION:
137 {
138 *error= ptr->call_free ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
139 return *(void **)&ptr->call_free;
140 }
141 #endif
142 case MEMCACHED_CALLBACK_GET_FAILURE:
143 {
144 *error= ptr->get_key_failure ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
145 return *(void **)&ptr->get_key_failure;
146 }
147 case MEMCACHED_CALLBACK_DELETE_TRIGGER:
148 {
149 *error= ptr->delete_trigger ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
150 return *(void **)&ptr->delete_trigger;
151 }
152 case MEMCACHED_CALLBACK_MAX:
153 default:
154 WATCHPOINT_ASSERT(0);
155 *error= MEMCACHED_FAILURE;
156 return NULL;
157 }
158 }