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
70
71
72 enum pcmk_cluster_layer {
73 pcmk_cluster_layer_unknown = 1,
74 pcmk_cluster_layer_invalid = 2,
75 pcmk_cluster_layer_corosync = 32,
76 };
77
78 enum pcmk_cluster_layer pcmk_get_cluster_layer(void);
79 const char *pcmk_cluster_layer_text(enum pcmk_cluster_layer layer);
80
81 #ifdef __cplusplus
82 }
83 #endif
84
85 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
86 #include <crm/cluster/compat.h>
87 #endif
88
89 #endif