corosync  2.4.2-dirty
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 
310  cmap_handle_t handle,
311  cmap_iter_handle_t iter_handle,
312  char key_name[],
313  size_t *value_len,
315 
322 extern cs_error_t cmap_iter_finalize(cmap_handle_t handle, cmap_iter_handle_t iter_handle);
323 
339  cmap_handle_t handle,
340  const char *key_name,
341  int32_t track_type,
342  cmap_notify_fn_t notify_fn,
343  void *user_data,
344  cmap_track_handle_t *cmap_track_handle);
345 
351 extern cs_error_t cmap_track_delete(cmap_handle_t handle, cmap_track_handle_t track_handle);
352 
355 #ifdef __cplusplus
356 }
357 #endif
358 
359 #endif /* COROSYNC_CMAP_H_DEFINED */
cs_error_t cmap_set_uint64(cmap_handle_t handle, const char *key_name, uint64_t value)
Definition: lib/cmap.c:440
cs_error_t cmap_get_uint8(cmap_handle_t handle, const char *key_name, uint8_t *u8)
Definition: lib/cmap.c:631
cs_error_t cmap_set_uint32(cmap_handle_t handle, const char *key_name, uint32_t value)
Definition: lib/cmap.c:430
cs_error_t cmap_set(cmap_handle_t handle, const char *key_name, const void *value, size_t value_len, cmap_value_types_t type)
Store value in cmap.
Definition: lib/cmap.c:348
cs_error_t cmap_track_add(cmap_handle_t handle, const char *key_name, int32_t track_type, cmap_notify_fn_t notify_fn, void *user_data, cmap_track_handle_t *cmap_track_handle)
Add tracking function for given key_name.
Definition: lib/cmap.c:933
uint32_t value
cmap_value_types_t type
Definition: cmap.h:112
cs_error_t cmap_iter_next(cmap_handle_t handle, cmap_iter_handle_t iter_handle, char key_name[], size_t *value_len, cmap_value_types_t *type)
Return next item in iterator iter.
Definition: lib/cmap.c:836
cmap_handle_t cmap_handle
Definition: sam.c:137
cs_error_t cmap_initialize(cmap_handle_t *handle)
Create a new cmap connection.
Definition: lib/cmap.c:90
cs_error_t cmap_get_uint16(cmap_handle_t handle, const char *key_name, uint16_t *u16)
Definition: lib/cmap.c:643
cs_error_t cmap_iter_init(cmap_handle_t handle, const char *prefix, cmap_iter_handle_t *cmap_iter_handle)
Initialize iterator with given prefix.
Definition: lib/cmap.c:781
cs_error_t cmap_get_int64(cmap_handle_t handle, const char *key_name, int64_t *i64)
Definition: lib/cmap.c:661
cs_error_t cmap_inc(cmap_handle_t handle, const char *key_name)
Increment value of key_name if it is [u]int* type.
Definition: lib/cmap.c:769
cs_error_t cmap_track_delete(cmap_handle_t handle, cmap_track_handle_t track_handle)
Delete track created previously by cmap_track_add.
Definition: lib/cmap.c:1024
Structure passed as new_value and old_value in change callback.
Definition: cmap.h:111
void(* cmap_notify_fn_t)(cmap_handle_t cmap_handle, cmap_track_handle_t cmap_track_handle, int32_t event, const char *key_name, struct cmap_notify_value new_value, struct cmap_notify_value old_value, void *user_data)
Prototype for notify callback function.
Definition: cmap.h:123
cs_error_t cmap_iter_finalize(cmap_handle_t handle, cmap_iter_handle_t iter_handle)
Finalize iterator.
Definition: lib/cmap.c:894
cs_error_t cmap_get(cmap_handle_t handle, const char *key_name, void *value, size_t *value_len, cmap_value_types_t *type)
Retrieve value of key key_name and store it in user preallocated value pointer.
Definition: lib/cmap.c:511
cs_error_t cmap_get_double(cmap_handle_t handle, const char *key_name, double *dbl)
Definition: lib/cmap.c:679
const void * data
Definition: cmap.h:114
void * user_data
Definition: sam.c:127
cs_error_t cmap_set_double(cmap_handle_t handle, const char *key_name, double value)
Definition: lib/cmap.c:450
cs_error_t cmap_get_uint32(cmap_handle_t handle, const char *key_name, uint32_t *u32)
Definition: lib/cmap.c:655
cs_error_t cmap_get_float(cmap_handle_t handle, const char *key_name, float *flt)
Definition: lib/cmap.c:673
cs_error_t cmap_get_uint64(cmap_handle_t handle, const char *key_name, uint64_t *u64)
Definition: lib/cmap.c:667
cs_error_t
The cs_error_t enum.
Definition: corotypes.h:94
uint64_t cmap_track_handle_t
Definition: cmap.h:64
cs_dispatch_flags_t
The cs_dispatch_flags_t enum.
Definition: corotypes.h:80
cs_error_t cmap_set_string(cmap_handle_t handle, const char *key_name, const char *value)
Definition: lib/cmap.c:455
size_t len
Definition: cmap.h:113
cs_error_t cmap_set_uint8(cmap_handle_t handle, const char *key_name, uint8_t value)
Definition: lib/cmap.c:410
cs_error_t cmap_get_string(cmap_handle_t handle, const char *key_name, char **str)
Shortcut for cmap_get for string type.
Definition: lib/cmap.c:685
cs_error_t cmap_delete(cmap_handle_t handle, const char *key_name)
Deletes key from cmap database.
Definition: lib/cmap.c:465
cs_error_t cmap_dispatch(cmap_handle_t handle, cs_dispatch_flags_t dispatch_types)
Dispatch data from service.
Definition: lib/cmap.c:187
uint64_t cmap_iter_handle_t
Definition: cmap.h:59
cs_error_t cmap_fd_get(cmap_handle_t handle, int *fd)
Get a file descriptor on which to poll.
Definition: lib/cmap.c:170
cs_error_t cmap_set_int64(cmap_handle_t handle, const char *key_name, int64_t value)
Definition: lib/cmap.c:435
cs_error_t cmap_get_int8(cmap_handle_t handle, const char *key_name, int8_t *i8)
Definition: lib/cmap.c:625
cmap_value_types_t
Possible types of value.
Definition: cmap.h:92
cs_error_t cmap_set_int32(cmap_handle_t handle, const char *key_name, int32_t value)
Definition: lib/cmap.c:425
cs_error_t cmap_context_set(cmap_handle_t handle, const void *context)
cmap_context_set
Definition: lib/cmap.c:329
cs_error_t cmap_finalize(cmap_handle_t handle)
Close the cmap handle.
Definition: lib/cmap.c:131
cs_error_t cmap_get_int32(cmap_handle_t handle, const char *key_name, int32_t *i32)
Definition: lib/cmap.c:649
cs_error_t cmap_dec(cmap_handle_t handle, const char *key_name)
Decrement value of key_name if it is [u]int* type.
Definition: lib/cmap.c:775
cs_error_t cmap_set_uint16(cmap_handle_t handle, const char *key_name, uint16_t value)
Definition: lib/cmap.c:420
cs_error_t cmap_context_get(cmap_handle_t handle, const void **context)
cmap_context_get
Definition: lib/cmap.c:310
cs_error_t cmap_set_int8(cmap_handle_t handle, const char *key_name, int8_t value)
Definition: lib/cmap.c:405
uint64_t cmap_handle_t
Definition: cmap.h:54
cs_error_t cmap_get_int16(cmap_handle_t handle, const char *key_name, int16_t *i16)
Definition: lib/cmap.c:637
cs_error_t cmap_set_int16(cmap_handle_t handle, const char *key_name, int16_t value)
Definition: lib/cmap.c:415
cs_error_t cmap_set_float(cmap_handle_t handle, const char *key_name, float value)
Definition: lib/cmap.c:445