1
2
3
4
5
6
7
8
9
10 #ifndef PCMK__CRM_CLUSTER__H
11 #define PCMK__CRM_CLUSTER__H
12
13 #include <glib.h>
14
15 #if SUPPORT_COROSYNC
16 #include <corosync/cpg.h>
17 #endif
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23
24 typedef struct pcmk__cluster_private pcmk__cluster_private_t;
25
26
27
28
29
30 struct pcmk__cluster {
31
32
33
34
35
36 pcmk__cluster_private_t *priv;
37
38
39
40 void (*destroy) (gpointer);
41
42 #if SUPPORT_COROSYNC
43
44
45
46
47
48 cpg_callbacks_t cpg;
49 #endif
50 };
51
52
53
54 typedef struct pcmk__cluster pcmk_cluster_t;
55
56 int pcmk_cluster_connect(pcmk_cluster_t *cluster);
57 int pcmk_cluster_disconnect(pcmk_cluster_t *cluster);
58
59 pcmk_cluster_t *pcmk_cluster_new(void);
60 void pcmk_cluster_free(pcmk_cluster_t *cluster);
61
62 int pcmk_cluster_set_destroy_fn(pcmk_cluster_t *cluster, void (*fn)(gpointer));
63 #if SUPPORT_COROSYNC
64 int pcmk_cpg_set_deliver_fn(pcmk_cluster_t *cluster, cpg_deliver_fn_t fn);
65 int pcmk_cpg_set_confchg_fn(pcmk_cluster_t *cluster, cpg_confchg_fn_t fn);
66 #endif
67
68
69 enum pcmk_cluster_layer {
70 pcmk_cluster_layer_unknown = 1,
71 pcmk_cluster_layer_invalid = 2,
72 pcmk_cluster_layer_corosync = 32,
73 };
74
75 enum pcmk_cluster_layer pcmk_get_cluster_layer(void);
76 const char *pcmk_cluster_layer_text(enum pcmk_cluster_layer layer);
77
78 #ifdef __cplusplus
79 }
80 #endif
81
82 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
83 #include <crm/cluster/compat.h>
84 #endif
85
86 #endif