1
2
3
4
5
6
7
8
9
10 #ifndef CIB_TYPES__H
11 # define CIB_TYPES__H
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17
18
19
20
21
22
23 # include <glib.h>
24 # include <libxml/tree.h>
25 # include <crm/common/ipc.h>
26 # include <crm/common/xml.h>
27
28 enum cib_variant {
29 cib_undefined,
30 cib_native,
31 cib_file,
32 cib_remote,
33 cib_database,
34 };
35
36 enum cib_state {
37 cib_connected_command,
38 cib_connected_query,
39 cib_disconnected
40 };
41
42 enum cib_conn_type {
43 cib_command,
44 cib_query,
45 cib_no_connection,
46 cib_command_nonblocking,
47 };
48
49 enum cib_call_options {
50 cib_none = 0x00000000,
51 cib_verbose = 0x00000001,
52 cib_xpath = 0x00000002,
53 cib_multiple = 0x00000004,
54 cib_can_create = 0x00000008,
55 cib_discard_reply = 0x00000010,
56 cib_no_children = 0x00000020,
57 cib_xpath_address = 0x00000040,
58 cib_mixed_update = 0x00000080,
59 cib_scope_local = 0x00000100,
60 cib_dryrun = 0x00000200,
61 cib_sync_call = 0x00001000,
62 cib_no_mtime = 0x00002000,
63 cib_zero_copy = 0x00004000,
64 cib_inhibit_notify = 0x00010000,
65 cib_quorum_override = 0x00100000,
66 cib_inhibit_bcast = 0x01000000,
67 cib_force_diff = 0x10000000
68 };
69
70 typedef struct cib_s cib_t;
71
72 typedef struct cib_api_operations_s {
73 int (*signon) (cib_t *cib, const char *name, enum cib_conn_type type);
74 int (*signon_raw) (cib_t *cib, const char *name, enum cib_conn_type type,
75 int *event_fd);
76 int (*signoff) (cib_t *cib);
77 int (*free) (cib_t *cib);
78 int (*set_op_callback) (cib_t *cib, void (*callback) (const xmlNode *msg,
79 int callid, int rc,
80 xmlNode *output));
81 int (*add_notify_callback) (cib_t *cib, const char *event,
82 void (*callback) (const char *event,
83 xmlNode *msg));
84 int (*del_notify_callback) (cib_t *cib, const char *event,
85 void (*callback) (const char *event,
86 xmlNode *msg));
87 int (*set_connection_dnotify) (cib_t *cib,
88 void (*dnotify) (gpointer user_data));
89 int (*inputfd) (cib_t *cib);
90 int (*noop) (cib_t *cib, int call_options);
91 int (*ping) (cib_t *cib, xmlNode **output_data, int call_options);
92 int (*query) (cib_t *cib, const char *section, xmlNode **output_data,
93 int call_options);
94 int (*query_from) (cib_t *cib, const char *host, const char *section,
95 xmlNode **output_data, int call_options);
96 int (*is_master) (cib_t *cib);
97 int (*set_master) (cib_t *cib, int call_options);
98 int (*set_slave) (cib_t *cib, int call_options);
99 int (*set_slave_all) (cib_t *cib, int call_options);
100 int (*sync) (cib_t *cib, const char *section, int call_options);
101 int (*sync_from) (cib_t *cib, const char *host, const char *section,
102 int call_options);
103 int (*upgrade) (cib_t *cib, int call_options);
104 int (*bump_epoch) (cib_t *cib, int call_options);
105 int (*create) (cib_t *cib, const char *section, xmlNode *data,
106 int call_options);
107 int (*modify) (cib_t *cib, const char *section, xmlNode *data,
108 int call_options);
109 int (*update) (cib_t *cib, const char *section, xmlNode *data,
110 int call_options);
111 int (*replace) (cib_t *cib, const char *section, xmlNode *data,
112 int call_options);
113 int (*remove) (cib_t *cib, const char *section, xmlNode *data,
114 int call_options);
115 int (*erase) (cib_t *cib, xmlNode **output_data, int call_options);
116 int (*delete_absolute) (cib_t *cib, const char *section, xmlNode *data,
117 int call_options);
118 int (*quit) (cib_t *cib, int call_options);
119 int (*register_notification) (cib_t *cib, const char *callback,
120 int enabled);
121 gboolean (*register_callback) (cib_t *cib, int call_id, int timeout,
122 gboolean only_success, void *user_data,
123 const char *callback_name,
124 void (*callback) (xmlNode*, int, int,
125 xmlNode*, void *));
126 gboolean (*register_callback_full)(cib_t *cib, int call_id, int timeout,
127 gboolean only_success, void *user_data,
128 const char *callback_name,
129 void (*callback)(xmlNode *, int, int,
130 xmlNode *, void *),
131 void (*free_func)(void *));
132 } cib_api_operations_t;
133
134 struct cib_s {
135 enum cib_state state;
136 enum cib_conn_type type;
137 enum cib_variant variant;
138
139 int call_id;
140 int call_timeout;
141 void *variant_opaque;
142 void *delegate_fn;
143
144 GList *notify_list;
145 void (*op_callback) (const xmlNode *msg, int call_id, int rc,
146 xmlNode *output);
147 cib_api_operations_t *cmds;
148 };
149
150 #ifdef __cplusplus
151 }
152 #endif
153
154 #endif