4db72e946ae30266beadea673e5deedca4548afe
[awesomized/libmemcached] / libmemcached / memcached.h
1 /*
2 * Summary: interface for memcached server
3 * Description: main include file for libmemcached
4 *
5 * Copy: See Copyright for the status of this software.
6 *
7 * Author: Brian Aker
8 */
9
10 #ifndef __MEMCACHED_H__
11 #define __MEMCACHED_H__
12
13 #include <stdlib.h>
14 #include <inttypes.h>
15 #include <sys/types.h>
16 #include <netinet/in.h>
17
18 #include <libmemcached/memcached_constants.h>
19 #include <libmemcached/memcached_types.h>
20 #include <libmemcached/memcached_server.h>
21 #include <libmemcached/memcached_string.h>
22 #include <libmemcached/memcached_result.h>
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27
28 /* These are Private and should not be used by applications */
29 #define MEMCACHED_VERSION_STRING_LENGTH 12
30
31 /* Public defines */
32 #define MEMCACHED_DEFAULT_PORT 11211
33 #define MEMCACHED_MAX_KEY 251 /* We add one to have it null terminated */
34 #define MEMCACHED_MAX_BUFFER 8196
35 #define MEMCACHED_MAX_HOST_LENGTH 64
36 #define MEMCACHED_WHEEL_SIZE 1024
37 #define MEMCACHED_STRIDE 4
38 #define MEMCACHED_DEFAULT_TIMEOUT INT32_MAX
39
40 /* string value */
41 #define LIBMEMCACHED_VERSION_STRING "0.17"
42
43 struct memcached_stat_st {
44 uint32_t pid;
45 uint32_t uptime;
46 uint32_t threads;
47 uint32_t time;
48 uint32_t pointer_size;
49 uint32_t rusage_user_seconds;
50 uint32_t rusage_user_microseconds;
51 uint32_t rusage_system_seconds;
52 uint32_t rusage_system_microseconds;
53 uint32_t curr_items;
54 uint32_t total_items;
55 uint64_t limit_maxbytes;
56 uint32_t curr_connections;
57 uint32_t total_connections;
58 uint32_t connection_structures;
59 uint64_t bytes;
60 uint64_t cmd_get;
61 uint64_t cmd_set;
62 uint64_t get_hits;
63 uint64_t get_misses;
64 uint64_t evictions;
65 uint64_t bytes_read;
66 uint64_t bytes_written;
67 char version[MEMCACHED_VERSION_STRING_LENGTH];
68 };
69
70 struct memcached_st {
71 memcached_allocated is_allocated;
72 memcached_server_st *hosts;
73 unsigned int number_of_hosts;
74 unsigned int cursor_server;
75 int cached_errno;
76 uint32_t flags;
77 int send_size;
78 int recv_size;
79 int32_t poll_timeout;
80 int32_t connect_timeout;
81 int32_t retry_timeout;
82 memcached_result_st result;
83 memcached_hash hash;
84 memcached_server_distribution distribution;
85 void *user_data;
86 unsigned int wheel[MEMCACHED_WHEEL_SIZE];
87 memcached_clone_func on_clone;
88 memcached_cleanup_func on_cleanup;
89 memcached_free_function call_free;
90 memcached_malloc_function call_malloc;
91 memcached_realloc_function call_realloc;
92 #ifdef NOT_USED /* Future Use */
93 uint8_t replicas;
94 memcached_return warning;
95 #endif
96 };
97
98 /* Public API */
99 const char * memcached_lib_version(void);
100
101 memcached_st *memcached_create(memcached_st *ptr);
102 void memcached_free(memcached_st *ptr);
103 memcached_st *memcached_clone(memcached_st *clone, memcached_st *ptr);
104
105 memcached_return memcached_delete(memcached_st *ptr, char *key, size_t key_length,
106 time_t expiration);
107 memcached_return memcached_increment(memcached_st *ptr,
108 char *key, size_t key_length,
109 uint32_t offset,
110 uint64_t *value);
111 memcached_return memcached_decrement(memcached_st *ptr,
112 char *key, size_t key_length,
113 uint32_t offset,
114 uint64_t *value);
115 void memcached_stat_free(memcached_st *, memcached_stat_st *);
116 memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_return *error);
117 memcached_return memcached_stat_servername(memcached_stat_st *stat, char *args,
118 char *hostname, unsigned int port);
119 memcached_return memcached_flush(memcached_st *ptr, time_t expiration);
120 memcached_return memcached_verbosity(memcached_st *ptr, unsigned int verbosity);
121 void memcached_quit(memcached_st *ptr);
122 char *memcached_strerror(memcached_st *ptr, memcached_return rc);
123 memcached_return memcached_behavior_set(memcached_st *ptr, memcached_behavior flag, uint64_t data);
124 uint64_t memcached_behavior_get(memcached_st *ptr, memcached_behavior flag);
125
126 /* All of the functions for adding data to the server */
127 memcached_return memcached_set(memcached_st *ptr, char *key, size_t key_length,
128 char *value, size_t value_length,
129 time_t expiration,
130 uint32_t flags);
131 memcached_return memcached_add(memcached_st *ptr, char *key, size_t key_length,
132 char *value, size_t value_length,
133 time_t expiration,
134 uint32_t flags);
135 memcached_return memcached_replace(memcached_st *ptr, char *key, size_t key_length,
136 char *value, size_t value_length,
137 time_t expiration,
138 uint32_t flags);
139 memcached_return memcached_append(memcached_st *ptr,
140 char *key, size_t key_length,
141 char *value, size_t value_length,
142 time_t expiration,
143 uint32_t flags);
144 memcached_return memcached_prepend(memcached_st *ptr,
145 char *key, size_t key_length,
146 char *value, size_t value_length,
147 time_t expiration,
148 uint32_t flags);
149 memcached_return memcached_cas(memcached_st *ptr,
150 char *key, size_t key_length,
151 char *value, size_t value_length,
152 time_t expiration,
153 uint32_t flags,
154 uint64_t cas);
155
156 /* Get functions */
157 char *memcached_get(memcached_st *ptr, char *key, size_t key_length,
158 size_t *value_length,
159 uint32_t *flags,
160 memcached_return *error);
161 memcached_return memcached_mget(memcached_st *ptr,
162 char **keys, size_t *key_length,
163 unsigned int number_of_keys);
164 char *memcached_fetch(memcached_st *ptr, char *key, size_t *key_length,
165 size_t *value_length, uint32_t *flags,
166 memcached_return *error);
167 memcached_result_st *memcached_fetch_result(memcached_st *ptr,
168 memcached_result_st *result,
169 memcached_return *error);
170
171 /* Server Public functions */
172
173 memcached_return memcached_server_add_udp(memcached_st *ptr,
174 char *hostname,
175 unsigned int port);
176 memcached_return memcached_server_add_unix_socket(memcached_st *ptr,
177 char *filename);
178 memcached_return memcached_server_add(memcached_st *ptr, char *hostname,
179 unsigned int port);
180 void memcached_server_list_free(memcached_server_st *ptr);
181 memcached_return memcached_server_push(memcached_st *ptr, memcached_server_st *list);
182
183 memcached_server_st *memcached_server_list_append(memcached_server_st *ptr,
184 char *hostname, unsigned int port,
185 memcached_return *error);
186 unsigned int memcached_server_list_count(memcached_server_st *ptr);
187 memcached_server_st *memcached_servers_parse(char *server_strings);
188
189 char *memcached_stat_get_value(memcached_st *ptr, memcached_stat_st *stat,
190 char *key, memcached_return *error);
191 char ** memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st *stat,
192 memcached_return *error);
193
194 char *memcached_get_by_key(memcached_st *ptr,
195 char *master_key, size_t master_key_length,
196 char *key, size_t key_length,
197 size_t *value_length,
198 uint32_t *flags,
199 memcached_return *error);
200
201 memcached_return memcached_mget_by_key(memcached_st *ptr,
202 char *master_key, size_t master_key_length,
203 char **keys, size_t *key_length,
204 unsigned int number_of_keys);
205
206 memcached_return memcached_set_by_key(memcached_st *ptr,
207 char *master_key, size_t master_key_length,
208 char *key, size_t key_length,
209 char *value, size_t value_length,
210 time_t expiration,
211 uint32_t flags);
212
213 memcached_return memcached_add_by_key(memcached_st *ptr,
214 char *master_key, size_t master_key_length,
215 char *key, size_t key_length,
216 char *value, size_t value_length,
217 time_t expiration,
218 uint32_t flags);
219
220 memcached_return memcached_replace_by_key(memcached_st *ptr,
221 char *master_key, size_t master_key_length,
222 char *key, size_t key_length,
223 char *value, size_t value_length,
224 time_t expiration,
225 uint32_t flags);
226
227 memcached_return memcached_prepend_by_key(memcached_st *ptr,
228 char *master_key, size_t master_key_length,
229 char *key, size_t key_length,
230 char *value, size_t value_length,
231 time_t expiration,
232 uint32_t flags);
233
234 memcached_return memcached_append_by_key(memcached_st *ptr,
235 char *master_key, size_t master_key_length,
236 char *key, size_t key_length,
237 char *value, size_t value_length,
238 time_t expiration,
239 uint32_t flags);
240
241 memcached_return memcached_cas_by_key(memcached_st *ptr,
242 char *master_key, size_t master_key_length,
243 char *key, size_t key_length,
244 char *value, size_t value_length,
245 time_t expiration,
246 uint32_t flags,
247 uint64_t cas);
248 memcached_return memcached_delete_by_key(memcached_st *ptr,
249 char *master_key, size_t master_key_length,
250 char *key, size_t key_length,
251 time_t expiration);
252
253 memcached_return memcached_fetch_execute(memcached_st *ptr,
254 unsigned int (*callback[])(memcached_st *ptr, memcached_result_st *result, void *context),
255 void *context,
256 unsigned int number_of_callbacks
257 );
258
259 memcached_return memcached_callback_set(memcached_st *ptr,
260 memcached_callback flag,
261 void *data);
262 void *memcached_callback_get(memcached_st *ptr,
263 memcached_callback flag,
264 memcached_return *error);
265
266 memcached_return memcached_server_cursor(memcached_st *ptr,
267 memcached_server_function *callback,
268 void *context,
269 unsigned int number_of_callbacks);
270
271 #ifndef __WATCHPOINT_H__
272 #define __WATCHPOINT_H__
273 /* Some personal debugging functions */
274 #ifdef HAVE_DEBUG
275 #define WATCHPOINT fprintf(stderr, "\nWATCHPOINT %s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
276 #ifdef __MEMCACHED_H__
277 #define WATCHPOINT_ERROR(A) fprintf(stderr, "\nWATCHPOINT %s:%d %s\n", __FILE__, __LINE__, memcached_strerror(NULL, A));fflush(stdout);
278 #define WATCHPOINT_IFERROR(A) if(A != MEMCACHED_SUCCESS)fprintf(stderr, "\nWATCHPOINT %s:%d %s\n", __FILE__, __LINE__, memcached_strerror(NULL, A));fflush(stdout);
279 #endif
280 #define WATCHPOINT_STRING(A) fprintf(stderr, "\nWATCHPOINT %s:%d (%s) %s\n", __FILE__, __LINE__,__func__,A);fflush(stdout);
281 #define WATCHPOINT_STRING_LENGTH(A,B) fprintf(stderr, "\nWATCHPOINT %s:%d (%s) %.*s\n", __FILE__, __LINE__,__func__,(int)B,A);fflush(stdout);
282 #define WATCHPOINT_NUMBER(A) fprintf(stderr, "\nWATCHPOINT %s:%d (%s) %zu\n", __FILE__, __LINE__,__func__,(size_t)(A));fflush(stdout);
283 #define WATCHPOINT_ERRNO(A) fprintf(stderr, "\nWATCHPOINT %s:%d (%s) %s\n", __FILE__, __LINE__,__func__, strerror(A));fflush(stdout);
284 #define WATCHPOINT_ASSERT(A) assert((A));
285 #else
286 #define WATCHPOINT
287 #ifdef __MEMCACHED_H__
288 #define WATCHPOINT_ERROR(A)
289 #define WATCHPOINT_IFERROR(A)
290 #endif
291 #define WATCHPOINT_STRING(A)
292 #define WATCHPOINT_NUMBER(A)
293 #define WATCHPOINT_ERRNO(A)
294 #define WATCHPOINT_ASSERT(A)
295 #endif
296
297 #endif /* __WATCHPOINT_H__ */
298
299
300 #ifdef __cplusplus
301 }
302 #endif
303
304 #endif /* __MEMCACHED_H__ */