3 #include <sys/socket.h>
4 #include <netinet/tcp.h>
7 These functions provide data and function callback support
10 memcached_return
memcached_callback_set(memcached_st
*ptr
,
11 memcached_callback flag
,
16 case MEMCACHED_CALLBACK_PREFIX_KEY
:
18 char *key
= (char *)data
;
22 ptr
->prefix_key_length
= strlen(key
);
23 if ((ptr
->prefix_key_length
> MEMCACHED_PREFIX_KEY_MAX_SIZE
-1)
24 || (strcpy(ptr
->prefix_key
, key
) == NULL
))
26 ptr
->prefix_key_length
= 0;
27 return MEMCACHED_BAD_KEY_PROVIDED
;
32 memset(ptr
->prefix_key
, 0, MEMCACHED_PREFIX_KEY_MAX_SIZE
);
33 ptr
->prefix_key_length
= 0;
38 case MEMCACHED_CALLBACK_USER_DATA
:
43 case MEMCACHED_CALLBACK_CLEANUP_FUNCTION
:
45 memcached_cleanup_func func
= (memcached_cleanup_func
)data
;
46 ptr
->on_cleanup
= func
;
49 case MEMCACHED_CALLBACK_CLONE_FUNCTION
:
51 memcached_clone_func func
= (memcached_clone_func
)data
;
55 case MEMCACHED_CALLBACK_MALLOC_FUNCTION
:
57 memcached_malloc_function func
= (memcached_malloc_function
)data
;
58 ptr
->call_malloc
= func
;
61 case MEMCACHED_CALLBACK_REALLOC_FUNCTION
:
63 memcached_realloc_function func
= (memcached_realloc_function
)data
;
64 ptr
->call_realloc
= func
;
67 case MEMCACHED_CALLBACK_FREE_FUNCTION
:
69 memcached_free_function func
= (memcached_free_function
)data
;
73 case MEMCACHED_CALLBACK_GET_FAILURE
:
75 memcached_trigger_key func
= (memcached_trigger_key
)data
;
76 ptr
->get_key_failure
= func
;
79 case MEMCACHED_CALLBACK_DELETE_TRIGGER
:
81 memcached_trigger_delete_key func
= (memcached_trigger_delete_key
)data
;
82 ptr
->delete_trigger
= func
;
86 return MEMCACHED_FAILURE
;
89 return MEMCACHED_SUCCESS
;
92 void *memcached_callback_get(memcached_st
*ptr
,
93 memcached_callback flag
,
94 memcached_return
*error
)
96 memcached_return local_error
;
102 case MEMCACHED_CALLBACK_PREFIX_KEY
:
104 *error
= ptr
->prefix_key
[0] != 0 ? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
105 return (void *)ptr
->prefix_key
;
107 case MEMCACHED_CALLBACK_USER_DATA
:
109 *error
= ptr
->user_data
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
110 return (void *)ptr
->user_data
;
112 case MEMCACHED_CALLBACK_CLEANUP_FUNCTION
:
114 *error
= ptr
->on_cleanup
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
115 return (void *)ptr
->on_cleanup
;
117 case MEMCACHED_CALLBACK_CLONE_FUNCTION
:
119 *error
= ptr
->on_clone
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
120 return (void *)ptr
->on_clone
;
122 case MEMCACHED_CALLBACK_MALLOC_FUNCTION
:
124 *error
= ptr
->call_malloc
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
125 return (void *)ptr
->call_malloc
;
127 case MEMCACHED_CALLBACK_REALLOC_FUNCTION
:
129 *error
= ptr
->call_realloc
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
130 return (void *)ptr
->call_realloc
;
132 case MEMCACHED_CALLBACK_FREE_FUNCTION
:
134 *error
= ptr
->call_free
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
135 return (void *)ptr
->call_free
;
137 case MEMCACHED_CALLBACK_GET_FAILURE
:
139 *error
= ptr
->get_key_failure
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
140 return (void *)ptr
->get_key_failure
;
142 case MEMCACHED_CALLBACK_DELETE_TRIGGER
:
144 *error
= ptr
->delete_trigger
? MEMCACHED_SUCCESS
: MEMCACHED_FAILURE
;
145 return (void *)ptr
->delete_trigger
;
148 WATCHPOINT_ASSERT(0);
149 *error
= MEMCACHED_FAILURE
;