1/*
2 * Please do not edit this file.
3 * It was generated using rpcgen.
4 */
5
6#ifndef _XCOM_VP_H_RPCGEN
7#define _XCOM_VP_H_RPCGEN
8
9#include <rpc/rpc.h>
10
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16/* Copyright (c) 2010, 2020, Oracle and/or its affiliates. All rights reserved.
17
18   This program is free software; you can redistribute it and/or modify
19   it under the terms of the GNU General Public License, version 2.0,
20   as published by the Free Software Foundation.
21
22   This program is also distributed with certain software (including
23   but not limited to OpenSSL) that is licensed under separate terms,
24   as designated in a particular file or component or in included license
25   documentation.  The authors of MySQL hereby grant you an additional
26   permission to link the program and your derivative works with the
27   separately licensed software that they have included with MySQL.
28
29   This program is distributed in the hope that it will be useful,
30   but WITHOUT ANY WARRANTY; without even the implied warranty of
31   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
32   GNU General Public License, version 2.0, for more details.
33
34   You should have received a copy of the GNU General Public License
35   along with this program; if not, write to the Free Software
36   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA */
37
38#include "xcom/xcom_vp_platform.h"
39#include "xcom/xcom_limits.h"
40#include "xcom/xcom_profile.h"
41
42enum xcom_proto {
43	x_unknown_proto = 0,
44	x_1_0 = 1,
45	x_1_1 = 2,
46	x_1_2 = 3,
47	x_1_3 = 4,
48	x_1_4 = 5,
49	x_1_5 = 6,
50	x_1_6 = 7,
51	x_1_7 = 8,
52	x_1_8 = 9
53};
54typedef enum xcom_proto xcom_proto;
55
56enum delivery_status {
57	delivery_ok = 0,
58	delivery_failure = 1
59};
60typedef enum delivery_status delivery_status;
61
62enum cons_type {
63	cons_majority = 0,
64	cons_all = 1
65};
66typedef enum cons_type cons_type;
67
68enum cargo_type {
69	unified_boot_type = 0,
70	xcom_boot_type = 1,
71	xcom_set_group = 2,
72	app_type = 4,
73	exit_type = 7,
74	reset_type = 8,
75	begin_trans = 9,
76	prepared_trans = 10,
77	abort_trans = 11,
78	view_msg = 12,
79	remove_reset_type = 13,
80	add_node_type = 14,
81	remove_node_type = 15,
82	enable_arbitrator = 16,
83	disable_arbitrator = 17,
84	force_config_type = 18,
85	x_terminate_and_exit = 19,
86	set_cache_limit = 20,
87	get_event_horizon_type = 21,
88	set_event_horizon_type = 22,
89	get_synode_app_data_type = 23,
90	convert_into_local_server_type = 24
91};
92typedef enum cargo_type cargo_type;
93
94enum recover_action {
95	rec_block = 0,
96	rec_delay = 1,
97	rec_send = 2
98};
99typedef enum recover_action recover_action;
100
101enum pax_op {
102	client_msg = 0,
103	initial_op = 1,
104	prepare_op = 2,
105	ack_prepare_op = 3,
106	ack_prepare_empty_op = 4,
107	accept_op = 5,
108	ack_accept_op = 6,
109	learn_op = 7,
110	recover_learn_op = 8,
111	multi_prepare_op = 9,
112	multi_ack_prepare_empty_op = 10,
113	multi_accept_op = 11,
114	multi_ack_accept_op = 12,
115	multi_learn_op = 13,
116	skip_op = 14,
117	i_am_alive_op = 15,
118	are_you_alive_op = 16,
119	need_boot_op = 17,
120	snapshot_op = 18,
121	die_op = 19,
122	read_op = 20,
123	gcs_snapshot_op = 21,
124	xcom_client_reply = 22,
125	tiny_learn_op = 23,
126	LAST_OP = 23 + 1
127};
128typedef enum pax_op pax_op;
129
130enum pax_msg_type {
131	normal = 0,
132	no_op = 1,
133	multi_no_op = 2
134};
135typedef enum pax_msg_type pax_msg_type;
136
137enum client_reply_code {
138	REQUEST_OK = 0,
139	REQUEST_FAIL = 1,
140	REQUEST_RETRY = 2
141};
142typedef enum client_reply_code client_reply_code;
143
144enum start_t {
145	IDLE = 0,
146	BOOT = 1,
147	RECOVER = 2
148};
149typedef enum start_t start_t;
150
151typedef uint32_t xcom_event_horizon;
152
153typedef uint32_t node_no;
154
155typedef struct {
156	u_int node_set_len;
157	bool_t *node_set_val;
158} node_set;
159
160typedef uint32_t bit_mask;
161
162struct bit_set {
163	struct {
164		u_int bits_len;
165		bit_mask *bits_val;
166	} bits;
167};
168typedef struct bit_set bit_set;
169#define BITS_PER_BYTE 8
170#define MASK_BITS ((bit_mask)(sizeof (bit_mask) * BITS_PER_BYTE)) /* bits per mask */
171#define howmany_words(x, y) (((x)+((y)-1))/(y))
172
173#define BIT_OP(__n, __p, __op, __inv) ((__p)->bits.bits_val[(__n)/MASK_BITS] __op __inv (1u << ((__n) % MASK_BITS)))
174#define BIT_XOR(__n, __p) BIT_OP(__n, __p, ^=,(bit_mask))
175#define BIT_SET(__n, __p) BIT_OP(__n, __p, |=,(bit_mask))
176#define BIT_CLR(__n, __p) BIT_OP(__n, __p, &=,(bit_mask) ~)
177#define BIT_ISSET(__n, __p) (BIT_OP(__n, __p, &,(bit_mask)) != 0ul)
178#define BIT_ZERO(__p) memset((__p)->bits.bits_val, 0, (__p)->bits.bits_len * sizeof(*(__p)->bits.bits_val))
179extern bit_set *new_bit_set(uint32_t bits);
180extern bit_set *clone_bit_set(bit_set *orig);
181extern void free_bit_set(bit_set *bs);
182#ifndef CHECKED_DATA
183#define CHECKED_DATA
184typedef struct {
185 u_int data_len;
186 char *data_val;
187} checked_data;
188extern bool_t xdr_checked_data (XDR *, checked_data*);
189#endif
190
191struct blob {
192	struct {
193		u_int data_len;
194		char *data_val;
195	} data;
196};
197typedef struct blob blob;
198
199struct x_proto_range {
200	xcom_proto min_proto;
201	xcom_proto max_proto;
202};
203typedef struct x_proto_range x_proto_range;
204
205struct synode_no {
206	uint32_t group_id;
207	uint64_t msgno;
208	node_no node;
209};
210typedef struct synode_no synode_no;
211
212struct trans_id {
213	synode_no cfg;
214	uint32_t pc;
215};
216typedef struct trans_id trans_id;
217
218struct node_address {
219	char *address;
220	blob uuid;
221	x_proto_range proto;
222};
223typedef struct node_address node_address;
224
225typedef struct {
226	u_int node_list_len;
227	node_address *node_list_val;
228} node_list;
229
230typedef struct {
231	u_int node_no_array_len;
232	node_no *node_no_array_val;
233} node_no_array;
234
235typedef struct {
236	u_int synode_no_array_len;
237	synode_no *synode_no_array_val;
238} synode_no_array;
239
240struct uncommitted_list {
241	uint32_t active;
242	synode_no_array vers;
243};
244typedef struct uncommitted_list uncommitted_list;
245
246struct repository {
247	synode_no vers;
248	synode_no_array msg_list;
249	uncommitted_list u_list;
250};
251typedef struct repository repository;
252
253struct x_error {
254	int32_t nodeid;
255	int32_t code;
256	char *message;
257};
258typedef struct x_error x_error;
259
260struct trans_data {
261	trans_id tid;
262	int32_t pc;
263	char *cluster_name;
264	x_error errmsg;
265};
266typedef struct trans_data trans_data;
267
268struct app_u {
269	cargo_type c_t;
270	union {
271		node_list nodes;
272		checked_data data;
273		trans_data td;
274		node_set present;
275		uint64_t cache_limit;
276		xcom_event_horizon event_horizon;
277		synode_no_array synodes;
278	} app_u_u;
279};
280typedef struct app_u app_u;
281
282struct app_data {
283	synode_no unique_id;
284	uint32_t group_id;
285	uint64_t lsn;
286	synode_no app_key;
287	cons_type consensus;
288	double expiry_time;
289	bool_t notused;
290	bool_t log_it;
291	bool_t chosen;
292	recover_action recover;
293	app_u body;
294	struct app_data *next;
295};
296typedef struct app_data app_data;
297
298typedef app_data *app_data_ptr;
299
300typedef struct {
301	u_int app_data_ptr_array_len;
302	app_data_ptr *app_data_ptr_array_val;
303} app_data_ptr_array;
304
305typedef app_data_ptr *app_data_list;
306
307struct key_range {
308	synode_no k1;
309	synode_no k2;
310};
311typedef struct key_range key_range;
312
313struct ballot {
314	int32_t cnt;
315	node_no node;
316};
317typedef struct ballot ballot;
318
319struct snapshot {
320	synode_no vers;
321	app_data_ptr_array snap;
322	uncommitted_list u_list;
323};
324typedef struct snapshot snapshot;
325
326struct config {
327	synode_no start;
328	synode_no boot_key;
329	node_list nodes;
330	node_set global_node_set;
331	xcom_event_horizon event_horizon;
332};
333typedef struct config config;
334
335typedef config *config_ptr;
336
337typedef struct {
338	u_int configs_len;
339	config_ptr *configs_val;
340} configs;
341
342struct gcs_snapshot {
343	synode_no log_start;
344	synode_no log_end;
345	configs cfg;
346	blob app_snap;
347};
348typedef struct gcs_snapshot gcs_snapshot;
349
350struct synode_app_data {
351	synode_no synode;
352	checked_data data;
353};
354typedef struct synode_app_data synode_app_data;
355
356typedef struct {
357	u_int synode_app_data_array_len;
358	synode_app_data *synode_app_data_array_val;
359} synode_app_data_array;
360
361struct pax_msg {
362	node_no to;
363	node_no from;
364	uint32_t group_id;
365	synode_no max_synode;
366	start_t start_type;
367	ballot reply_to;
368	ballot proposal;
369	pax_op op;
370	synode_no synode;
371	pax_msg_type msg_type;
372	bit_set *receivers;
373	app_data *a;
374	snapshot *snap;
375	gcs_snapshot *gcs_snap;
376	client_reply_code cli_err;
377	bool_t force_delivery;
378	int32_t refcnt;
379	synode_no delivered_msg;
380	xcom_event_horizon event_horizon;
381	synode_app_data_array requested_synode_app_data;
382};
383typedef struct pax_msg pax_msg;
384
385/* the xdr functions */
386
387#if defined(__STDC__) || defined(__cplusplus)
388extern  bool_t xdr_xcom_proto (XDR *, xcom_proto*);
389extern  bool_t xdr_delivery_status (XDR *, delivery_status*);
390extern  bool_t xdr_cons_type (XDR *, cons_type*);
391extern  bool_t xdr_cargo_type (XDR *, cargo_type*);
392extern  bool_t xdr_recover_action (XDR *, recover_action*);
393extern  bool_t xdr_pax_op (XDR *, pax_op*);
394extern  bool_t xdr_pax_msg_type (XDR *, pax_msg_type*);
395extern  bool_t xdr_client_reply_code (XDR *, client_reply_code*);
396extern  bool_t xdr_start_t (XDR *, start_t*);
397extern  bool_t xdr_xcom_event_horizon (XDR *, xcom_event_horizon*);
398extern  bool_t xdr_node_no (XDR *, node_no*);
399extern  bool_t xdr_node_set (XDR *, node_set*);
400extern  bool_t xdr_bit_mask (XDR *, bit_mask*);
401extern  bool_t xdr_bit_set (XDR *, bit_set*);
402extern  bool_t xdr_blob (XDR *, blob*);
403extern  bool_t xdr_x_proto_range (XDR *, x_proto_range*);
404extern  bool_t xdr_synode_no (XDR *, synode_no*);
405extern  bool_t xdr_trans_id (XDR *, trans_id*);
406extern  bool_t xdr_node_address (XDR *, node_address*);
407extern  bool_t xdr_node_list (XDR *, node_list*);
408extern  bool_t xdr_node_no_array (XDR *, node_no_array*);
409extern  bool_t xdr_synode_no_array (XDR *, synode_no_array*);
410extern  bool_t xdr_uncommitted_list (XDR *, uncommitted_list*);
411extern  bool_t xdr_repository (XDR *, repository*);
412extern  bool_t xdr_x_error (XDR *, x_error*);
413extern  bool_t xdr_trans_data (XDR *, trans_data*);
414extern  bool_t xdr_app_u (XDR *, app_u*);
415extern  bool_t xdr_app_data (XDR *, app_data*);
416extern  bool_t xdr_app_data_ptr (XDR *, app_data_ptr*);
417extern  bool_t xdr_app_data_ptr_array (XDR *, app_data_ptr_array*);
418extern  bool_t xdr_app_data_list (XDR *, app_data_list*);
419extern  bool_t xdr_key_range (XDR *, key_range*);
420extern  bool_t xdr_ballot (XDR *, ballot*);
421extern  bool_t xdr_snapshot (XDR *, snapshot*);
422extern  bool_t xdr_config (XDR *, config*);
423extern  bool_t xdr_config_ptr (XDR *, config_ptr*);
424extern  bool_t xdr_configs (XDR *, configs*);
425extern  bool_t xdr_gcs_snapshot (XDR *, gcs_snapshot*);
426extern  bool_t xdr_synode_app_data (XDR *, synode_app_data*);
427extern  bool_t xdr_synode_app_data_array (XDR *, synode_app_data_array*);
428extern  bool_t xdr_pax_msg (XDR *, pax_msg*);
429
430#else /* K&R C */
431extern bool_t xdr_xcom_proto ();
432extern bool_t xdr_delivery_status ();
433extern bool_t xdr_cons_type ();
434extern bool_t xdr_cargo_type ();
435extern bool_t xdr_recover_action ();
436extern bool_t xdr_pax_op ();
437extern bool_t xdr_pax_msg_type ();
438extern bool_t xdr_client_reply_code ();
439extern bool_t xdr_start_t ();
440extern bool_t xdr_xcom_event_horizon ();
441extern bool_t xdr_node_no ();
442extern bool_t xdr_node_set ();
443extern bool_t xdr_bit_mask ();
444extern bool_t xdr_bit_set ();
445extern bool_t xdr_blob ();
446extern bool_t xdr_x_proto_range ();
447extern bool_t xdr_synode_no ();
448extern bool_t xdr_trans_id ();
449extern bool_t xdr_node_address ();
450extern bool_t xdr_node_list ();
451extern bool_t xdr_node_no_array ();
452extern bool_t xdr_synode_no_array ();
453extern bool_t xdr_uncommitted_list ();
454extern bool_t xdr_repository ();
455extern bool_t xdr_x_error ();
456extern bool_t xdr_trans_data ();
457extern bool_t xdr_app_u ();
458extern bool_t xdr_app_data ();
459extern bool_t xdr_app_data_ptr ();
460extern bool_t xdr_app_data_ptr_array ();
461extern bool_t xdr_app_data_list ();
462extern bool_t xdr_key_range ();
463extern bool_t xdr_ballot ();
464extern bool_t xdr_snapshot ();
465extern bool_t xdr_config ();
466extern bool_t xdr_config_ptr ();
467extern bool_t xdr_configs ();
468extern bool_t xdr_gcs_snapshot ();
469extern bool_t xdr_synode_app_data ();
470extern bool_t xdr_synode_app_data_array ();
471extern bool_t xdr_pax_msg ();
472
473#endif /* K&R C */
474
475#ifdef __cplusplus
476}
477#endif
478
479#endif /* !_XCOM_VP_H_RPCGEN */
480