xref: /haiku/docs/develop/kits/app/bmessage.txt (revision 7457ccb4b2f4786525d3b7bda42598487d57ab7d)
1Message header:
2Data		Bytes	Meaning
3FOB1		4		version
4			4		checksum
5			4		flattened size
6			4		'what'
7			1		flags
8
9Data field:
10Data		Bytes	Meaning
11			1		flags
12			4		type
13	// Mini data (all data less than 256 bytes total)
14			1		item count (*if* there is more than one)
15			1		data length
16	// Maxi data (all data more than 255 bytes total)
17			4		item count (*if* there is more than one)
18			4		data length
19			1		name length
20			X		name
21	// Single item
22			4		item size (*if* this is a variable sized item)
23			Y		item data - NULL padded to 8-byte boundary
24	// Multiple items
25			4		item size (*if* this is a variable sized item)
26			Y		item data - NULL padded to 8-byte boundary
27
28//------------------------------------------------------------------------------
29// An example
30//------------------------------------------------------------------------------
31// PrintToStream()
32Data		Bytes	Meaning
33
34//BMessage: what =  (0x0, or 0)
35FOB1		4		version
360x90010001	4		checksum
370x00000192	4		flattened size (402 bytes)
380x0			4		'what' (none specified)
390x01		1		flags
40
41//    entry ATTRIBUTE_MENU, type='LONG', c=5, size= 4,
420x07		1		flags
43LONG		4		type
440x05		1		item count
450x14		1		data length
460x0e		1		name length
47ATTRIBUTE_	14		name (ATTRIBUTE_MENU)
48//			data[0]: 0x8 (8, '')
490x8			4		data[0]
50//          data[1]: 0x8 (8, '')
510x8			4		data[1]
52//          data[2]: 0x6 (6, '')
530x6			4		data[2]
54//          data[3]: 0x8 (8, '')
550x8			4		data[3]
56//          data[4]: 0x6 (6, '')
570x6			4		data[4]
58
59//    entry  CRITERIA_MENU, type='LONG', c=5, size= 4,
600x07		1		flags
61LONG		4		type
620x05		1		item count
630x14		1		data length
640x0d		1		name length
65CRITERIA_	13		name (CRITERIA_MENU)
66//			data[0]: 0x0 (0, '')
670x0			4		data[0]
68//          data[1]: 0x0 (0, '')
690x0			4		data[1]
70//          data[2]: 0x0 (0, '')
710x0			4		data[2]
72//          data[3]: 0x0 (0, '')
730x0			4		data[3]
74//          data[4]: 0x0 (0, '')
750x0			4		data[4]
76
77//    entry          VALUE, type='CSTR', c=5,
780x03		1		flags
79CSTR		4		type
800x5			1		item count
810x90		1		data length
820x5			1		name length
83VALUE		5		name (VALUE)
84//			size=18, data[0]: "listar@freelists."
850x12		4		item size
86listar@fre	18		data[0]
87			2		padding to 8-byte boundary
88//          size=27, data[1]: "freelists-users@freelists."
890x1b		4		item size
90freelists@	27		data[1]
91			1		padding to 8-byte boundary
92//          size=27, data[2]: "freelists-users@freelists."
930x1b		4		item size
94freelists@	27		data[2]
95			1		padding to 8-byte boundary
96//          size=19, data[3]: "ecartis@freelists."
970x13		4		item size
98ecartis@fr	19		data[3]
99			1		padding to 8-byte boundary
100//          size=26, data[4]: "freelists-news@freelists."
1010x1a		4		item size
102freelists@	26		data[4]
103			2		padding to 8-byte boundary
104
105//    entry    AND_OR_MENU, type='LONG', c=5, size= 4,
1060x07		1		flags
107LONG		4		type
1080x5			1		item count
1090x14		1		data length
1100x0b		1		name length
111AND_OR_MEN	11		name (AND_OR_MENU)
112//			data[0]: 0x1 (1, '')
1130x1			4		data[0]
114//          data[1]: 0x1 (1, '')
1150x1			4		data[1]
116//          data[2]: 0x1 (1, '')
1170x1			4		data[2]
118//          data[3]: 0x1 (1, '')
1190x1			4		data[3]
120//          data[4]: 0x0 (0, '')
1210x0			4		data[4]
122
123//    entry          COUNT, type='LONG', c=1, size= 4, data[0]: 0x5 (5, '')
1240x0f		1		flags
125LONG		4		type
1260x4			1		data length
1270x5			1		name length
128COUNT		5		name (COUNT)
1290x5			4		data
130
131//    entry    ACTION_MENU, type='LONG', c=1, size= 4, data[0]: 0x2 (2, '')
1320x0f		1		flags
133LONG		4		type
1340x4			1		data length
1350x0b		1		name length
136ACTION_MEN	11		name (ACTION_MENU)
1370x2			4		data
138
139//    entry   ACTION_VALUE, type='CSTR', c=1, size=42, data[0]: "/boot/home/mail/Erik's Mail/freelists.org"
1400x0b		1		flags
141CSTR		4		type
1420x30		1		data length
1430x0c		1		name length
144ACTION_VAL	12		name (ACTION_VALUE)
1450x2a		4		item size
146/boot/home	42		data
147			2		padding to 8-byte boundary
148
149//------------------------------------------------------------------------------
150// An old example
151Data		Bytes	Meaning
152
1531BOF(ascii)	4		version
154??			4		??
1550x76		4		flattened size
156DPUQ		4		what(B_QUERY_UPDATE)
157??			1		??
158
1590F			1		flags (including fixed chunk size)
160GNOL		4		type
16104			1		chunk size
16206			1		name length
163opcode		6		name
1641			4		data(B_ENTRY_CREATED)
165
1660F			1		flags (including fixed chunk size)
167GNOL		4		type
16804			1		chunk size
16906			1		name length
170device		6		name
1714			4		data
172
1730F			1		flags (including fixed chunk size)
174GNLL		4		type
17508			1		chunk size
17609			1		name length
177directory	9		name
178524992		8		data
179
1800F			1		flags (including fixed chunk size)
181GNLL		4		type
18208			1		chunk size
18304			1		name length
184node		4		name
185524295		8		data
186
1870B			1		flags (including variable chunk size)
188RTSC		4		type
18908			1		chunk size
19004			1		name length
191name		4		name
19208			1		chunk size?
193			8		padded string?
194