2 * Copyright (C) 2006-2009 Brian Aker
5 * Use and distribution licensed under the BSD license. See
6 * the COPYING file in the parent directory for full text.
8 * Summary: Change any of the possible callbacks.
12 #include <libmemcached/common.h>
13 #include <sys/types.h>
15 #pragma GCC diagnostic ignored "-Wstrict-aliasing"
18 These functions provide data and function callback support
21 memcached_return_t
memcached_callback_set(memcached_st
*ptr
,
22 const memcached_callback_t flag
,
27 case MEMCACHED_CALLBACK_PREFIX_KEY
:
29 return memcached_set_prefix_key(ptr
, (char*)data
, data
? strlen((char*)data
) : 0);
31 case MEMCACHED_CALLBACK_USER_DATA
:
36 case MEMCACHED_CALLBACK_CLEANUP_FUNCTION
:
38 memcached_cleanup_fn func
= *(memcached_cleanup_fn
*)&data
;
39 ptr
->on_cleanup
= func
;
42 case MEMCACHED_CALLBACK_CLONE_FUNCTION
:
44 memcached_clone_fn func
= *(memcached_clone_fn
*)&data
;
48 #ifdef MEMCACHED_ENABLE_DEPRECATED
49 case MEMCACHED_CALLBACK_MALLOC_FUNCTION
:
51 memcached_malloc_function func
= *(memcached_malloc_fn
*)&data
;
52 ptr
->call_malloc
= func
;
55 case MEMCACHED_CALLBACK_REALLOC_FUNCTION
:
57 memcached_realloc_function func
= *(memcached_realloc_fn
*)&data
;
58 ptr
->call_realloc
= func
;
61 case MEMCACHED_CALLBACK_FREE_FUNCTION
:
63 memcached_free_function func
= *(memcached_free_fn
*)&data
;
68 case MEMCACHED_CALLBACK_GET_FAILURE
:
70 memcached_trigger_key_fn func
= *(memcached_trigger_key_fn
*)&data
;
71 ptr
->get_key_failure
= func
;
74 case MEMCACHED_CALLBACK_DELETE_TRIGGER
:
76 memcached_trigger_delete_key_fn func
= *(memcached_trigger_delete_key_fn
*)&data
;
77 ptr
->delete_trigger
= func
;
80 case MEMCACHED_CALLBACK_MAX
:
82 return MEMCACHED_FAILURE
;
85 return MEMCACHED_SUCCESS
;
88 void *memcached_callback_get(memcached_st
*ptr
,
89 const memcached_callback_t flag
,
90 memcached_return_t
*error
)
92 memcached_return_t local_error
;
99 case MEMCACHED_CALLBACK_PREFIX_KEY
:
103 *error
= MEMCACHED_SUCCESS
;
104 return (void *)memcached_array_string(ptr
->prefix_key
);
108 *error
= MEMCACHED_FAILURE
;
112 case MEMCACHED_CALLBACK_USER_DATA
:
114 *error
= ptr
->user_data
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
115 return (void *)ptr
->user_data
;
117 case MEMCACHED_CALLBACK_CLEANUP_FUNCTION
:
119 *error
= ptr
->on_cleanup
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
120 return *(void **)&ptr
->on_cleanup
;
122 case MEMCACHED_CALLBACK_CLONE_FUNCTION
:
124 *error
= ptr
->on_clone
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
125 return *(void **)&ptr
->on_clone
;
127 #ifdef MEMCACHED_ENABLE_DEPRECATED
128 case MEMCACHED_CALLBACK_MALLOC_FUNCTION
:
130 *error
= ptr
->call_malloc
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
131 return *(void **)&ptr
->call_malloc
;
133 case MEMCACHED_CALLBACK_REALLOC_FUNCTION
:
135 *error
= ptr
->call_realloc
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
136 return *(void **)&ptr
->call_realloc
;
138 case MEMCACHED_CALLBACK_FREE_FUNCTION
:
140 *error
= ptr
->call_free
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
141 return *(void **)&ptr
->call_free
;
144 case MEMCACHED_CALLBACK_GET_FAILURE
:
146 *error
= ptr
->get_key_failure
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
147 return *(void **)&ptr
->get_key_failure
;
149 case MEMCACHED_CALLBACK_DELETE_TRIGGER
:
151 *error
= ptr
->delete_trigger
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
152 return *(void **)&ptr
->delete_trigger
;
154 case MEMCACHED_CALLBACK_MAX
:
156 WATCHPOINT_ASSERT(0);
157 *error
= MEMCACHED_FAILURE
;