summaryrefslogtreecommitdiff
path: root/src/rep/rep.msg
blob: d5c56d93635dc9ceeef31d02653bccd872694890 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
/*-
 * See the file LICENSE for redistribution information.
 *
 * Copyright (c) 2001, 2015 Oracle and/or its affiliates.  All rights reserved.
 *
 * $Id$
 */

DBPRIVATE
PREFIX  __rep

INCLUDE #include "db_int.h"
INCLUDE #include "dbinc/db_page.h"
INCLUDE #include "dbinc/db_am.h"
INCLUDE #include "dbinc/mp.h"
INCLUDE #include "dbinc/txn.h"
INCLUDE

/*
 * bulk - message for bulk log records or pages
 */
BEGIN_MSG bulk		check_length
ARG	len		u_int32_t
ARG	lsn		DB_LSN
ARG	bulkdata	DBT
END

/*
 * control - replication control message
 */
BEGIN_MSG control	check_length
ARG	rep_version	u_int32_t
ARG	log_version	u_int32_t
ARG	lsn		DB_LSN
ARG	rectype		u_int32_t
ARG	gen		u_int32_t
ARG	msg_sec		u_int32_t
ARG	msg_nsec	u_int32_t
ARG	flags		u_int32_t
END

/*
 * egen data
 */
BEGIN_MSG egen		check_length
ARG	egen		u_int32_t
END

/*
 * file info
 *
 * NOTE:  The order of the DBTs is important and relevant in the
 * GET_CURINFO macro.
 */
BEGIN_MSG fileinfo	alloc check_length version
ARG	pgsize		u_int32_t
ARG	pgno		db_pgno_t
ARG	max_pgno	db_pgno_t
ARG	filenum		u_int32_t
ARG	finfo_flags	u_int32_t
ARG	type		u_int32_t
ARG	db_flags	u_int32_t
ARG	uid		DBT
ARG	info		DBT
ARG	dir		DBT
ARG	blob_fid_lo	u_int32_t
ARG	blob_fid_hi	u_int32_t
END

BEGIN_MSG fileinfo_v7	alloc check_length version
ARG	pgsize		u_int32_t
ARG	pgno		db_pgno_t
ARG	max_pgno	db_pgno_t
ARG	filenum		u_int32_t
ARG	finfo_flags	u_int32_t
ARG	type		u_int32_t
ARG	db_flags	u_int32_t
ARG	uid		DBT
ARG	info		DBT
ARG	dir		DBT
END

BEGIN_MSG fileinfo_v6	alloc check_length version
ARG	pgsize		u_int32_t
ARG	pgno		db_pgno_t
ARG	max_pgno	db_pgno_t
ARG	filenum		u_int32_t
ARG	finfo_flags	u_int32_t		
ARG	type		u_int32_t
ARG	db_flags	u_int32_t
ARG	uid		DBT
ARG	info		DBT
END

/*
 * grant info - clients send to masters granting a lease.
 */
BEGIN_MSG grant_info	check_length
ARG	msg_sec		u_int32_t
ARG	msg_nsec	u_int32_t
END

/*
 * We do not need to do anything with LOG record data.
 * It is opaque data to us.
 */

/*
 * log request
 */
BEGIN_MSG logreq	check_length
ARG	endlsn		DB_LSN
END

/*
 * We do not need to do anything with NEWCLIENT/NEWSITE cdata dbt.
 * It is user data and the app has to do whatever transformation
 * it needs to with its own data.
 */
/*
 * newfile version
 */
BEGIN_MSG newfile	check_length
ARG	version		u_int32_t
END

/*
 * update - send update information
 */
BEGIN_MSG update	alloc check_length version
ARG	first_lsn	DB_LSN
ARG	first_vers	u_int32_t
ARG	num_files	u_int32_t
END

/*
 * vote info.  Current version.
 */
BEGIN_MSG vote_info	check_length
ARG	egen		u_int32_t
ARG	nsites		u_int32_t
ARG	nvotes		u_int32_t
ARG	priority	u_int32_t
ARG	spare_pri	u_int32_t
ARG	tiebreaker	u_int32_t
ARG	data_gen	u_int32_t
END
/*
 * vote info old version from REPVERSION 5 and earlier.
 */
BEGIN_MSG vote_info_v5	check_length
ARG	egen		u_int32_t
ARG	nsites		u_int32_t
ARG	nvotes		u_int32_t
ARG	priority	u_int32_t
ARG	tiebreaker	u_int32_t
END

/*
 * LSN history database - key
 */ 
BEGIN_MSG lsn_hist_key
ARG	version		u_int32_t
ARG	gen		u_int32_t
END

/*
 * LSN history database - data
 */ 
BEGIN_MSG lsn_hist_data
ARG	envid		u_int32_t
ARG	lsn		DB_LSN
ARG	hist_sec	u_int32_t
ARG	hist_nsec	u_int32_t
END

/*
 * Request for blob files.
 */
BEGIN_MSG blob_update_req
ARG	blob_fid	u_int64_t
ARG	blob_sid	u_int64_t
ARG	blob_id		u_int64_t
ARG	highest_id	u_int64_t
END

/*
 * A list of blob file for a database.
 */
BEGIN_MSG blob_update
ARG	blob_fid	u_int64_t
ARG	highest_id	u_int64_t
ARG	flags		u_int32_t
ARG	num_blobs	u_int32_t
END

/*
 * Blob file description, part of blob_update.
 */
BEGIN_MSG blob_file
ARG	blob_sid	u_int64_t
ARG	blob_id		u_int64_t
ARG	blob_size	u_int64_t
END

/*
 * A piece of data from a blob file.
 */
BEGIN_MSG blob_chunk
ARG	flags		u_int32_t
ARG	blob_fid	u_int64_t
ARG	blob_sid	u_int64_t
ARG	blob_id		u_int64_t
ARG	offset		u_int64_t
ARG	data		DBT
END

/*
 * Request for data from a blob file at the given offset.
 */
BEGIN_MSG blob_chunk_req
ARG	blob_fid	u_int64_t
ARG	blob_sid	u_int64_t
ARG	blob_id		u_int64_t
ARG	offset		u_int64_t
END