Additional flag removal.
[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
16 #if !defined(__cplusplus)
17 # include <stdbool.h>
18 #endif
19
20 #include <sys/types.h>
21 #include <netinet/in.h>
22
23 #include <libmemcached/visibility.h>
24 #include <libmemcached/memcached_configure.h>
25 #include <libmemcached/memcached_constants.h>
26 #include <libmemcached/memcached_types.h>
27 #include <libmemcached/memcached_get.h>
28 #include <libmemcached/memcached_server.h>
29 #include <libmemcached/memcached_string.h>
30 #include <libmemcached/memcached_result.h>
31 #include <libmemcached/memcached_storage.h>
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36
37 #define MEMCACHED_VERSION_STRING_LENGTH 24
38
39 struct memcached_analysis_st {
40 uint32_t average_item_size;
41 uint32_t longest_uptime;
42 uint32_t least_free_server;
43 uint32_t most_consumed_server;
44 uint32_t oldest_server;
45 double pool_hit_ratio;
46 uint64_t most_used_bytes;
47 uint64_t least_remaining_bytes;
48 };
49
50 struct memcached_stat_st {
51 uint32_t connection_structures;
52 uint32_t curr_connections;
53 uint32_t curr_items;
54 uint32_t pid;
55 uint32_t pointer_size;
56 uint32_t rusage_system_microseconds;
57 uint32_t rusage_system_seconds;
58 uint32_t rusage_user_microseconds;
59 uint32_t rusage_user_seconds;
60 uint32_t threads;
61 uint32_t time;
62 uint32_t total_connections;
63 uint32_t total_items;
64 uint32_t uptime;
65 uint64_t bytes;
66 uint64_t bytes_read;
67 uint64_t bytes_written;
68 uint64_t cmd_get;
69 uint64_t cmd_set;
70 uint64_t evictions;
71 uint64_t get_hits;
72 uint64_t get_misses;
73 uint64_t limit_maxbytes;
74 char version[MEMCACHED_VERSION_STRING_LENGTH];
75 };
76
77 struct memcached_st {
78 struct {
79 bool is_allocated:1;
80 bool is_initialized:1;
81 bool is_purging:1;
82 } options;
83 uint8_t distribution;
84 uint8_t hash;
85 uint32_t continuum_points_counter;
86 memcached_server_st *hosts;
87 memcached_server_st *last_disconnected_server;
88 int32_t snd_timeout;
89 int32_t rcv_timeout;
90 uint32_t server_failure_limit;
91 uint32_t io_msg_watermark;
92 uint32_t io_bytes_watermark;
93 uint32_t io_key_prefetch;
94 uint32_t number_of_hosts;
95 uint32_t cursor_server;
96 int cached_errno;
97 struct {
98 bool no_block:1;
99 bool tcp_nodelay:1;
100 bool reuse_memory:1;
101 bool use_md5:1;
102 bool use_crc:1;
103 bool use_cache_lookups:1;
104 bool support_cas:1;
105 bool buffer_requests:1;
106 bool use_sort_hosts:1;
107 bool verify_key:1;
108 bool ketama_weighted:1;
109 bool binary_protocol:1;
110 bool hash_with_prefix_key:1;
111 bool no_reply:1;
112 bool use_udp:1;
113 bool auto_eject_hosts:1;
114 bool randomize_replica_read:1;
115 } flags;
116 int32_t poll_timeout;
117 int32_t connect_timeout;
118 int32_t retry_timeout;
119 uint32_t continuum_count;
120 int send_size;
121 int recv_size;
122 void *user_data;
123 time_t next_distribution_rebuild;
124 size_t prefix_key_length;
125 memcached_hash hash_continuum;
126 memcached_result_st result;
127 memcached_continuum_item_st *continuum;
128 memcached_clone_func on_clone;
129 memcached_cleanup_func on_cleanup;
130 memcached_free_function call_free;
131 memcached_malloc_function call_malloc;
132 memcached_realloc_function call_realloc;
133 memcached_calloc_function call_calloc;
134 memcached_trigger_key get_key_failure;
135 memcached_trigger_delete_key delete_trigger;
136 char prefix_key[MEMCACHED_PREFIX_KEY_MAX_SIZE];
137 uint32_t number_of_replicas;
138 memcached_callback_st *callbacks;
139 };
140
141 LIBMEMCACHED_API
142 memcached_return memcached_version(memcached_st *ptr);
143
144 /* Public API */
145
146 LIBMEMCACHED_API
147 const char * memcached_lib_version(void);
148
149 LIBMEMCACHED_API
150 memcached_st *memcached_create(memcached_st *ptr);
151 LIBMEMCACHED_API
152 void memcached_free(memcached_st *ptr);
153 LIBMEMCACHED_API
154 memcached_st *memcached_clone(memcached_st *clone, memcached_st *ptr);
155
156 LIBMEMCACHED_API
157 memcached_return memcached_delete(memcached_st *ptr, const char *key, size_t key_length,
158 time_t expiration);
159 LIBMEMCACHED_API
160 memcached_return memcached_increment(memcached_st *ptr,
161 const char *key, size_t key_length,
162 uint32_t offset,
163 uint64_t *value);
164 LIBMEMCACHED_API
165 memcached_return memcached_decrement(memcached_st *ptr,
166 const char *key, size_t key_length,
167 uint32_t offset,
168 uint64_t *value);
169
170 LIBMEMCACHED_API
171 memcached_return memcached_increment_by_key(memcached_st *ptr,
172 const char *master_key, size_t master_key_length,
173 const char *key, size_t key_length,
174 uint64_t offset,
175 uint64_t *value);
176
177 LIBMEMCACHED_API
178 memcached_return memcached_decrement_by_key(memcached_st *ptr,
179 const char *master_key, size_t master_key_length,
180 const char *key, size_t key_length,
181 uint64_t offset,
182 uint64_t *value);
183
184 LIBMEMCACHED_API
185 memcached_return memcached_increment_with_initial(memcached_st *ptr,
186 const char *key,
187 size_t key_length,
188 uint64_t offset,
189 uint64_t initial,
190 time_t expiration,
191 uint64_t *value);
192 LIBMEMCACHED_API
193 memcached_return memcached_decrement_with_initial(memcached_st *ptr,
194 const char *key,
195 size_t key_length,
196 uint64_t offset,
197 uint64_t initial,
198 time_t expiration,
199 uint64_t *value);
200 LIBMEMCACHED_API
201 memcached_return memcached_increment_with_initial_by_key(memcached_st *ptr,
202 const char *master_key,
203 size_t master_key_length,
204 const char *key,
205 size_t key_length,
206 uint64_t offset,
207 uint64_t initial,
208 time_t expiration,
209 uint64_t *value);
210 LIBMEMCACHED_API
211 memcached_return memcached_decrement_with_initial_by_key(memcached_st *ptr,
212 const char *master_key,
213 size_t master_key_length,
214 const char *key,
215 size_t key_length,
216 uint64_t offset,
217 uint64_t initial,
218 time_t expiration,
219 uint64_t *value);
220 LIBMEMCACHED_API
221 void memcached_stat_free(memcached_st *, memcached_stat_st *);
222 LIBMEMCACHED_API
223 memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_return *error);
224 LIBMEMCACHED_API
225 memcached_return memcached_stat_servername(memcached_stat_st *memc_stat, char *args,
226 char *hostname, unsigned int port);
227 LIBMEMCACHED_API
228 memcached_return memcached_flush(memcached_st *ptr, time_t expiration);
229 LIBMEMCACHED_API
230 memcached_return memcached_verbosity(memcached_st *ptr, unsigned int verbosity);
231 LIBMEMCACHED_API
232 void memcached_quit(memcached_st *ptr);
233 LIBMEMCACHED_API
234 const char *memcached_strerror(memcached_st *ptr, memcached_return rc);
235 LIBMEMCACHED_API
236 memcached_return memcached_behavior_set(memcached_st *ptr, memcached_behavior flag, uint64_t data);
237 LIBMEMCACHED_API
238 uint64_t memcached_behavior_get(memcached_st *ptr, memcached_behavior flag);
239
240 /* The two public hash bits */
241 LIBMEMCACHED_API
242 uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memcached_hash hash_algorithm);
243 LIBMEMCACHED_API
244 uint32_t memcached_generate_hash(memcached_st *ptr, const char *key, size_t key_length);
245
246 LIBMEMCACHED_API
247 memcached_return memcached_flush_buffers(memcached_st *mem);
248
249 /* Server Public functions */
250
251 LIBMEMCACHED_API
252 memcached_return memcached_server_add_udp(memcached_st *ptr,
253 const char *hostname,
254 unsigned int port);
255 LIBMEMCACHED_API
256 memcached_return memcached_server_add_unix_socket(memcached_st *ptr,
257 const char *filename);
258 LIBMEMCACHED_API
259 memcached_return memcached_server_add(memcached_st *ptr, const char *hostname,
260 unsigned int port);
261
262 LIBMEMCACHED_API
263 memcached_return memcached_server_add_udp_with_weight(memcached_st *ptr,
264 const char *hostname,
265 unsigned int port,
266 uint32_t weight);
267 LIBMEMCACHED_API
268 memcached_return memcached_server_add_unix_socket_with_weight(memcached_st *ptr,
269 const char *filename,
270 uint32_t weight);
271 LIBMEMCACHED_API
272 memcached_return memcached_server_add_with_weight(memcached_st *ptr, const char *hostname,
273 unsigned int port,
274 uint32_t weight);
275 LIBMEMCACHED_API
276 void memcached_server_list_free(memcached_server_st *ptr);
277 LIBMEMCACHED_API
278 memcached_return memcached_server_push(memcached_st *ptr, memcached_server_st *list);
279
280 LIBMEMCACHED_API
281 memcached_server_st *memcached_server_list_append(memcached_server_st *ptr,
282 const char *hostname,
283 unsigned int port,
284 memcached_return *error);
285 LIBMEMCACHED_API
286 memcached_server_st *memcached_server_list_append_with_weight(memcached_server_st *ptr,
287 const char *hostname,
288 unsigned int port,
289 uint32_t weight,
290 memcached_return *error);
291 LIBMEMCACHED_API
292 unsigned int memcached_server_list_count(memcached_server_st *ptr);
293 LIBMEMCACHED_API
294 memcached_server_st *memcached_servers_parse(const char *server_strings);
295
296 LIBMEMCACHED_API
297 char *memcached_stat_get_value(memcached_st *ptr, memcached_stat_st *memc_stat,
298 const char *key, memcached_return *error);
299 LIBMEMCACHED_API
300 char ** memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st *memc_stat,
301 memcached_return *error);
302
303 LIBMEMCACHED_API
304 memcached_return memcached_delete_by_key(memcached_st *ptr,
305 const char *master_key, size_t master_key_length,
306 const char *key, size_t key_length,
307 time_t expiration);
308
309 LIBMEMCACHED_API
310 memcached_return memcached_fetch_execute(memcached_st *ptr,
311 memcached_execute_function *callback,
312 void *context,
313 unsigned int number_of_callbacks);
314
315 LIBMEMCACHED_API
316 memcached_return memcached_callback_set(memcached_st *ptr,
317 memcached_callback flag,
318 void *data);
319 LIBMEMCACHED_API
320 void *memcached_callback_get(memcached_st *ptr,
321 memcached_callback flag,
322 memcached_return *error);
323
324 LIBMEMCACHED_API
325 memcached_return memcached_dump(memcached_st *ptr, memcached_dump_func *function, void *context, uint32_t number_of_callbacks);
326
327
328 LIBMEMCACHED_API
329 memcached_return memcached_set_memory_allocators(memcached_st *ptr,
330 memcached_malloc_function mem_malloc,
331 memcached_free_function mem_free,
332 memcached_realloc_function mem_realloc,
333 memcached_calloc_function mem_calloc);
334
335 LIBMEMCACHED_API
336 void memcached_get_memory_allocators(memcached_st *ptr,
337 memcached_malloc_function *mem_malloc,
338 memcached_free_function *mem_free,
339 memcached_realloc_function *mem_realloc,
340 memcached_calloc_function *mem_calloc);
341
342 LIBMEMCACHED_API
343 void *memcached_get_user_data(memcached_st *ptr);
344 LIBMEMCACHED_API
345 void *memcached_set_user_data(memcached_st *ptr, void *data);
346
347 LIBMEMCACHED_LOCAL
348 memcached_return run_distribution(memcached_st *ptr);
349
350 #define memcached_is_allocated(__object) ((__object)->options.is_allocated)
351 #define memcached_is_initialized(__object) ((__object)->options.is_initialized)
352
353 #ifdef __cplusplus
354 }
355 #endif
356
357
358 #endif /* __MEMCACHED_H__ */