1
2
3
4
5
6
7
8
9
10 #ifndef PCMK__CRM_CIB_CIB_TYPES__H
11 # define PCMK__CRM_CIB_CIB_TYPES__H
12
13 # include <glib.h>
14 # include <libxml/tree.h>
15 # include <crm/common/ipc.h>
16 # include <crm/common/xml.h>
17
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21
22
23
24
25
26
27
28 enum cib_variant {
29 cib_undefined = 0,
30 cib_native = 1,
31 cib_file = 2,
32 cib_remote = 3,
33
34 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
35
36 cib_database = 4,
37 #endif
38 };
39
40 enum cib_state {
41 cib_connected_command,
42 cib_connected_query,
43 cib_disconnected
44 };
45
46 enum cib_conn_type {
47 cib_command,
48 cib_query,
49 cib_no_connection,
50 cib_command_nonblocking,
51 };
52
53 enum cib_call_options {
54 cib_none = 0,
55 cib_verbose = (1 << 0),
56 cib_xpath = (1 << 1),
57 cib_multiple = (1 << 2),
58 cib_can_create = (1 << 3),
59 cib_discard_reply = (1 << 4),
60 cib_no_children = (1 << 5),
61 cib_xpath_address = (1 << 6),
62 cib_mixed_update = (1 << 7),
63 cib_scope_local = (1 << 8),
64 cib_dryrun = (1 << 9),
65 cib_sync_call = (1 << 12),
66 cib_no_mtime = (1 << 13),
67 cib_zero_copy = (1 << 14),
68 cib_inhibit_notify = (1 << 16),
69
70 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
71
72 cib_quorum_override = (1 << 20),
73 #endif
74
75
76 cib_inhibit_bcast = (1 << 24),
77
78 cib_force_diff = (1 << 28),
79 };
80
81 typedef struct cib_s cib_t;
82
83 typedef struct cib_api_operations_s {
84 int (*signon) (cib_t *cib, const char *name, enum cib_conn_type type);
85 int (*signon_raw) (cib_t *cib, const char *name, enum cib_conn_type type,
86 int *event_fd);
87 int (*signoff) (cib_t *cib);
88 int (*free) (cib_t *cib);
89 int (*set_op_callback) (cib_t *cib, void (*callback) (const xmlNode *msg,
90 int callid, int rc,
91 xmlNode *output));
92 int (*add_notify_callback) (cib_t *cib, const char *event,
93 void (*callback) (const char *event,
94 xmlNode *msg));
95 int (*del_notify_callback) (cib_t *cib, const char *event,
96 void (*callback) (const char *event,
97 xmlNode *msg));
98 int (*set_connection_dnotify) (cib_t *cib,
99 void (*dnotify) (gpointer user_data));
100 int (*inputfd) (cib_t *cib);
101 int (*noop) (cib_t *cib, int call_options);
102 int (*ping) (cib_t *cib, xmlNode **output_data, int call_options);
103 int (*query) (cib_t *cib, const char *section, xmlNode **output_data,
104 int call_options);
105 int (*query_from) (cib_t *cib, const char *host, const char *section,
106 xmlNode **output_data, int call_options);
107
108
109 int (*is_master) (cib_t *cib);
110
111
112 int (*set_master) (cib_t *cib, int call_options);
113
114
115 int (*set_slave) (cib_t *cib, int call_options);
116
117
118 int (*set_slave_all) (cib_t *cib, int call_options);
119
120 int (*sync) (cib_t *cib, const char *section, int call_options);
121 int (*sync_from) (cib_t *cib, const char *host, const char *section,
122 int call_options);
123 int (*upgrade) (cib_t *cib, int call_options);
124 int (*bump_epoch) (cib_t *cib, int call_options);
125 int (*create) (cib_t *cib, const char *section, xmlNode *data,
126 int call_options);
127 int (*modify) (cib_t *cib, const char *section, xmlNode *data,
128 int call_options);
129
130
131 int (*update) (cib_t *cib, const char *section, xmlNode *data,
132 int call_options);
133
134 int (*replace) (cib_t *cib, const char *section, xmlNode *data,
135 int call_options);
136 int (*remove) (cib_t *cib, const char *section, xmlNode *data,
137 int call_options);
138 int (*erase) (cib_t *cib, xmlNode **output_data, int call_options);
139
140
141 int (*delete_absolute) (cib_t *cib, const char *section, xmlNode *data,
142 int call_options);
143
144 int (*quit) (cib_t *cib, int call_options);
145 int (*register_notification) (cib_t *cib, const char *callback,
146 int enabled);
147 gboolean (*register_callback) (cib_t *cib, int call_id, int timeout,
148 gboolean only_success, void *user_data,
149 const char *callback_name,
150 void (*callback) (xmlNode*, int, int,
151 xmlNode*, void *));
152 gboolean (*register_callback_full)(cib_t *cib, int call_id, int timeout,
153 gboolean only_success, void *user_data,
154 const char *callback_name,
155 void (*callback)(xmlNode *, int, int,
156 xmlNode *, void *),
157 void (*free_func)(void *));
158
159
160
161
162
163
164
165
166
167 int (*set_primary)(cib_t *cib, int call_options);
168
169
170
171
172
173
174
175
176
177 int (*set_secondary)(cib_t *cib, int call_options);
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199 int (*client_id)(const cib_t *cib, const char **async_id,
200 const char **sync_id);
201 } cib_api_operations_t;
202
203 struct cib_s {
204 enum cib_state state;
205 enum cib_conn_type type;
206 enum cib_variant variant;
207
208 int call_id;
209 int call_timeout;
210 void *variant_opaque;
211 void *delegate_fn;
212
213 GList *notify_list;
214 void (*op_callback) (const xmlNode *msg, int call_id, int rc,
215 xmlNode *output);
216 cib_api_operations_t *cmds;
217 };
218
219 #ifdef __cplusplus
220 }
221 #endif
222
223 #endif