corosync  2.4.5
cmap.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011 Red Hat, Inc.
3  *
4  * All rights reserved.
5  *
6  * Author: Jan Friesse (jfriesse@redhat.com)
7  *
8  * This software licensed under BSD license, the text of which follows:
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions are met:
12  *
13  * - Redistributions of source code must retain the above copyright notice,
14  * this list of conditions and the following disclaimer.
15  * - Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  * - Neither the name of the Red Hat, Inc. nor the names of its
19  * contributors may be used to endorse or promote products derived from this
20  * software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32  * THE POSSIBILITY OF SUCH DAMAGE.
33  */
34 
35 #ifndef COROSYNC_CMAP_H_DEFINED
36 #define COROSYNC_CMAP_H_DEFINED
37 
38 #include <corosync/corotypes.h>
39 #include <corosync/hdb.h>
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
51 /*
52  * Handle for cmap service connection
53  */
54 typedef uint64_t cmap_handle_t;
55 
56 /*
57  * Handle for cmap iterator
58  */
59 typedef uint64_t cmap_iter_handle_t;
60 
61 /*
62  * Handle for cmap tracking function
63  */
64 typedef uint64_t cmap_track_handle_t;
65 
66 /*
67  * Maximum length of key in cmap
68  */
69 #define CMAP_KEYNAME_MAXLEN 255
70 /*
71  * Minumum length of key in cmap
72  */
73 #define CMAP_KEYNAME_MINLEN 3
74 
75 /*
76  * Tracking values.
77  */
78 #define CMAP_TRACK_ADD 4
79 #define CMAP_TRACK_DELETE 1
80 #define CMAP_TRACK_MODIFY 2
81 
87 #define CMAP_TRACK_PREFIX 8
88 
92 typedef enum {
106 
113  size_t len;
114  const void *data;
115 };
116 
123 typedef void (*cmap_notify_fn_t) (
124  cmap_handle_t cmap_handle,
125  cmap_track_handle_t cmap_track_handle,
126  int32_t event,
127  const char *key_name,
128  struct cmap_notify_value new_value,
129  struct cmap_notify_value old_value,
130  void *user_data);
131 
139  cmap_handle_t *handle);
140 
145 extern cs_error_t cmap_finalize (
146  cmap_handle_t handle);
147 
154 extern cs_error_t cmap_fd_get (
155  cmap_handle_t handle,
156  int *fd);
157 
163 extern cs_error_t cmap_dispatch (
164  cmap_handle_t handle,
165  cs_dispatch_flags_t dispatch_types);
173  cmap_handle_t handle,
174  const void **context);
175 
183  cmap_handle_t handle,
184  const void *context);
185 
194 extern cs_error_t cmap_set(
195  cmap_handle_t handle,
196  const char *key_name,
197  const void *value,
198  size_t value_len,
200 
201 /*
202  * Shortcuts for cmap_set with given type
203  */
204 extern cs_error_t cmap_set_int8(cmap_handle_t handle, const char *key_name, int8_t value);
205 extern cs_error_t cmap_set_uint8(cmap_handle_t handle, const char *key_name, uint8_t value);
206 extern cs_error_t cmap_set_int16(cmap_handle_t handle, const char *key_name, int16_t value);
207 extern cs_error_t cmap_set_uint16(cmap_handle_t handle, const char *key_name, uint16_t value);
208 extern cs_error_t cmap_set_int32(cmap_handle_t handle, const char *key_name, int32_t value);
209 extern cs_error_t cmap_set_uint32(cmap_handle_t handle, const char *key_name, uint32_t value);
210 extern cs_error_t cmap_set_int64(cmap_handle_t handle, const char *key_name, int64_t value);
211 extern cs_error_t cmap_set_uint64(cmap_handle_t handle, const char *key_name, uint64_t value);
212 extern cs_error_t cmap_set_float(cmap_handle_t handle, const char *key_name, float value);
213 extern cs_error_t cmap_set_double(cmap_handle_t handle, const char *key_name, double value);
214 extern cs_error_t cmap_set_string(cmap_handle_t handle, const char *key_name, const char *value);
215 
221 extern cs_error_t cmap_delete(cmap_handle_t handle, const char *key_name);
222 
239 extern cs_error_t cmap_get(
240  cmap_handle_t handle,
241  const char *key_name,
242  void *value,
243  size_t *value_len,
245 
246 /*
247  * Shortcuts for cmap_get.
248  */
249 extern cs_error_t cmap_get_int8(cmap_handle_t handle, const char *key_name, int8_t *i8);
250 extern cs_error_t cmap_get_uint8(cmap_handle_t handle, const char *key_name, uint8_t *u8);
251 extern cs_error_t cmap_get_int16(cmap_handle_t handle, const char *key_name, int16_t *i16);
252 extern cs_error_t cmap_get_uint16(cmap_handle_t handle, const char *key_name, uint16_t *u16);
253 extern cs_error_t cmap_get_int32(cmap_handle_t handle, const char *key_name, int32_t *i32);
254 extern cs_error_t cmap_get_uint32(cmap_handle_t handle, const char *key_name, uint32_t *u32);
255 extern cs_error_t cmap_get_int64(cmap_handle_t handle, const char *key_name, int64_t *i64);
256 extern cs_error_t cmap_get_uint64(cmap_handle_t handle, const char *key_name, uint64_t *u64);
257 extern cs_error_t cmap_get_float(cmap_handle_t handle, const char *key_name, float *flt);
258 extern cs_error_t cmap_get_double(cmap_handle_t handle, const char *key_name, double *dbl);
259 
269 extern cs_error_t cmap_get_string(cmap_handle_t handle, const char *key_name, char **str);
270 
277 extern cs_error_t cmap_inc(cmap_handle_t handle, const char *key_name);
278 
285 extern cs_error_t cmap_dec(cmap_handle_t handle, const char *key_name);
286 
294 extern cs_error_t cmap_iter_init(cmap_handle_t handle, const char *prefix, cmap_iter_handle_t *cmap_iter_handle);
295 
312  cmap_handle_t handle,
313  cmap_iter_handle_t iter_handle,
314  char key_name[],
315  size_t *value_len,
317 
324 extern cs_error_t cmap_iter_finalize(cmap_handle_t handle, cmap_iter_handle_t iter_handle);
325 
341  cmap_handle_t handle,
342  const char *key_name,
343  int32_t track_type,
344  cmap_notify_fn_t notify_fn,
345  void *user_data,
346  cmap_track_handle_t *cmap_track_handle);
347 
353 extern cs_error_t cmap_track_delete(cmap_handle_t handle, cmap_track_handle_t track_handle);
354 
357 #ifdef __cplusplus
358 }
359 #endif
360 
361 #endif /* COROSYNC_CMAP_H_DEFINED */