1
1
/*
2
- * Copyright (C) 2020 Codership Oy <[email protected] >
2
+ * Copyright (C) 2020-2025 Codership Oy <[email protected] >
3
3
*
4
4
* This file is part of wsrep-API.
5
5
*
@@ -88,6 +88,54 @@ struct wsrep_membership
88
88
struct wsrep_member_info_ext members [1 ];
89
89
};
90
90
91
+ /**
92
+ * Member info structure extended to contain member state and flags
93
+ */
94
+ struct wsrep_member_info_ext_v2
95
+ {
96
+ struct wsrep_member_info base ;
97
+ wsrep_seqno_t last_committed ;
98
+ enum wsrep_member_status status ;
99
+ uint8_t flags ;
100
+ };
101
+
102
+ /* Member flags */
103
+ #define WSREP_MEMBER_FLAGS_REP 0x01 // group representative
104
+ #define WSREP_MEMBER_FLAGS_CLA 0x02 // count last applied (for JOINED node)
105
+ #define WSREP_MEMBER_FLAGS_BOOTSTRAP 0x04 // part of prim bootstrap process
106
+ #define WSREP_MEMBER_FLAGS_STATELESS 0x08 // arbitrator or otherwise stateless node
107
+
108
+ /**
109
+ * Extended membership structure v2
110
+ */
111
+ struct wsrep_membership_v2
112
+ {
113
+ /**
114
+ * Epoch of the membership data (last time it was updated)
115
+ */
116
+ wsrep_uuid_t group_uuid ;
117
+ /**
118
+ * Sequence number of the last received (not processed) action
119
+ */
120
+ wsrep_seqno_t last_received ;
121
+ /**
122
+ * When the members' data was last updated
123
+ */
124
+ wsrep_seqno_t updated ;
125
+ /**
126
+ * Current group state
127
+ */
128
+ enum wsrep_view_status state ;
129
+ /**
130
+ * Number of members in the array
131
+ */
132
+ size_t num ;
133
+ /**
134
+ * Membership array
135
+ */
136
+ struct wsrep_member_info_ext_v2 members [1 ];
137
+ };
138
+
91
139
/**
92
140
* Memory allocation callback for wsrep_get_mmebership_fn() below
93
141
*
@@ -111,6 +159,21 @@ typedef wsrep_status_t (*wsrep_get_membership_fn) (
111
159
wsrep_allocator_cb allocator ,
112
160
struct wsrep_membership * * membership );
113
161
162
+ /**
163
+ * Query membership v2
164
+ *
165
+ * @param wsrep provider handle
166
+ * @param allocator to use for wsrep_membership struct allocation
167
+ * @param membership pointer to pointer to the memebrship structure.
168
+ * The structure is allocated by provider and must be freed
169
+ * by the caller.
170
+ * @return error code of the call
171
+ */
172
+ typedef wsrep_status_t (* wsrep_get_membership_v2_fn ) (
173
+ wsrep_t * wsrep ,
174
+ wsrep_allocator_cb allocator ,
175
+ struct wsrep_membership_v2 * * membership );
176
+
114
177
/**
115
178
* Membership service struct.
116
179
* Returned by WSREP_MEMBERSHIP_SERVICE_INIT_FUNC_V1
@@ -120,6 +183,15 @@ struct wsrep_membership_service_v1
120
183
wsrep_get_membership_fn get_membership ;
121
184
};
122
185
186
+ /**
187
+ * Membership service struct.
188
+ * Returned by WSREP_MEMBERSHIP_SERVICE_INIT_FUNC_V2
189
+ */
190
+ struct wsrep_membership_service_v2
191
+ {
192
+ wsrep_get_membership_v2_fn get_membership ;
193
+ };
194
+
123
195
#ifdef __cplusplus
124
196
}
125
197
#endif /* __cplusplus */
@@ -131,8 +203,17 @@ typedef
131
203
void
132
204
(* wsrep_membership_service_v1_deinit_fn )(void );
133
205
206
+ typedef
207
+ wsrep_status_t
208
+ (* wsrep_membership_service_v2_init_fn ) (struct wsrep_membership_service_v2 * );
209
+ typedef
210
+ void
211
+ (* wsrep_membership_service_v2_deinit_fn )(void );
212
+
134
213
/** must be exported by the provider */
135
214
#define WSREP_MEMBERSHIP_SERVICE_V1_INIT_FN "wsrep_init_membership_service_v1"
136
215
#define WSREP_MEMBERSHIP_SERVICE_V1_DEINIT_FN "wsrep_deinit_membership_service_v1"
216
+ #define WSREP_MEMBERSHIP_SERVICE_V2_INIT_FN "wsrep_init_membership_service_v2"
217
+ #define WSREP_MEMBERSHIP_SERVICE_V2_DEINIT_FN "wsrep_deinit_membership_service_v2"
137
218
138
219
#endif /* WSREP_MEMBERSHIP_SERVICE_H */
0 commit comments