5348183cf89e134d17d1f7daeb2d8991a9087c88
[awesomized/libmemcached] / lib / 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 cleanup_func func= (cleanup_func)data;
24 ptr->on_cleanup= func;
25 break;
26 }
27 case MEMCACHED_CALLBACK_CLONE_FUNCTION:
28 {
29 clone_func func= (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 default:
52 return MEMCACHED_FAILURE;
53 }
54
55 return MEMCACHED_SUCCESS;
56 }
57
58 void *memcached_callback_get(memcached_st *ptr,
59 memcached_callback flag,
60 memcached_return *error)
61 {
62 switch (flag)
63 {
64 case MEMCACHED_CALLBACK_USER_DATA:
65 {
66 *error= ptr->user_data ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
67 return (void *)ptr->user_data;
68 }
69 case MEMCACHED_CALLBACK_CLEANUP_FUNCTION:
70 {
71 *error= ptr->on_cleanup ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
72 return (void *)ptr->on_cleanup;
73 }
74 case MEMCACHED_CALLBACK_CLONE_FUNCTION:
75 {
76 *error= ptr->on_clone ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
77 return (void *)ptr->on_clone;
78 }
79 case MEMCACHED_CALLBACK_MALLOC_FUNCTION:
80 {
81 *error= ptr->call_malloc ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
82 return (void *)ptr->call_malloc;
83 }
84 case MEMCACHED_CALLBACK_REALLOC_FUNCTION:
85 {
86 *error= ptr->call_realloc ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
87 return (void *)ptr->call_realloc;
88 }
89 case MEMCACHED_CALLBACK_FREE_FUNCTION:
90 {
91 *error= ptr->call_free ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
92 return (void *)ptr->call_free;
93 }
94 default:
95 WATCHPOINT_ASSERT(0);
96 *error= MEMCACHED_FAILURE;
97 return NULL;
98 }
99 }