haiku/docs/develop/app/bmessage.txt
ejakowatz 380156b567 Clarified the format, in particular with regard to how 'mini' vs. 'maxi'
data effects field sizes.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9742 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-02 20:49:35 +00:00

194 lines
4.6 KiB
Plaintext

Message header:
Data Bytes Meaning
FOB1 4 version
4 checksum
4 flattened size
4 'what'
1 flags
Data field:
Data Bytes Meaning
1 flags
4 type
// Mini data (all data less than 256 bytes total)
1 item count (*if* there is more than one)
1 data length
// Maxi data (all data more than 255 bytes total)
4 item count (*if* there is more than one)
4 data length
1 name length
X name
// Single item
4 item size (*if* this is a variable sized item)
Y item data - NULL padded to 8-byte boundary
// Multiple items
4 item size (*if* this is a variable sized item)
Y item data - NULL padded to 8-byte boundary
//------------------------------------------------------------------------------
// An example
//------------------------------------------------------------------------------
// PrintToStream()
Data Bytes Meaning
//BMessage: what = (0x0, or 0)
FOB1 4 version
0x90010001 4 checksum
0x00000192 4 flattened size (402 bytes)
0x0 4 'what' (none specified)
0x01 1 flags
// entry ATTRIBUTE_MENU, type='LONG', c=5, size= 4,
0x07 1 flags
LONG 4 type
0x05 1 item count
0x14 1 data length
0x0e 1 name length
ATTRIBUTE_ 14 name (ATTRIBUTE_MENU)
// data[0]: 0x8 (8, '')
0x8 4 data[0]
// data[1]: 0x8 (8, '')
0x8 4 data[1]
// data[2]: 0x6 (6, '')
0x6 4 data[2]
// data[3]: 0x8 (8, '')
0x8 4 data[3]
// data[4]: 0x6 (6, '')
0x6 4 data[4]
// entry CRITERIA_MENU, type='LONG', c=5, size= 4,
0x07 1 flags
LONG 4 type
0x05 1 item count
0x14 1 data length
0x0d 1 name length
CRITERIA_ 13 name (CRITERIA_MENU)
// data[0]: 0x0 (0, '')
0x0 4 data[0]
// data[1]: 0x0 (0, '')
0x0 4 data[1]
// data[2]: 0x0 (0, '')
0x0 4 data[2]
// data[3]: 0x0 (0, '')
0x0 4 data[3]
// data[4]: 0x0 (0, '')
0x0 4 data[4]
// entry VALUE, type='CSTR', c=5,
0x03 1 flags
CSTR 4 type
0x5 1 item count
0x90 1 data length
0x5 1 name length
VALUE 5 name (VALUE)
// size=18, data[0]: "listar@freelists."
0x12 4 item size
listar@fre 18 data[0]
2 padding to 8-byte boundary
// size=27, data[1]: "freelists-users@freelists."
0x1b 4 item size
freelists@ 27 data[1]
1 padding to 8-byte boundary
// size=27, data[2]: "freelists-users@freelists."
0x1b 4 item size
freelists@ 27 data[2]
1 padding to 8-byte boundary
// size=19, data[3]: "ecartis@freelists."
0x13 4 item size
ecartis@fr 19 data[3]
1 padding to 8-byte boundary
// size=26, data[4]: "freelists-news@freelists."
0x1a 4 item size
freelists@ 26 data[4]
2 padding to 8-byte boundary
// entry AND_OR_MENU, type='LONG', c=5, size= 4,
0x07 1 flags
LONG 4 type
0x5 1 item count
0x14 1 data length
0x0b 1 name length
AND_OR_MEN 11 name (AND_OR_MENU)
// data[0]: 0x1 (1, '')
0x1 4 data[0]
// data[1]: 0x1 (1, '')
0x1 4 data[1]
// data[2]: 0x1 (1, '')
0x1 4 data[2]
// data[3]: 0x1 (1, '')
0x1 4 data[3]
// data[4]: 0x0 (0, '')
0x0 4 data[4]
// entry COUNT, type='LONG', c=1, size= 4, data[0]: 0x5 (5, '')
0x0f 1 flags
LONG 4 type
0x4 1 data length
0x5 1 name length
COUNT 5 name (COUNT)
0x5 4 data
// entry ACTION_MENU, type='LONG', c=1, size= 4, data[0]: 0x2 (2, '')
0x0f 1 flags
LONG 4 type
0x4 1 data length
0x0b 1 name length
ACTION_MEN 11 name (ACTION_MENU)
0x2 4 data
// entry ACTION_VALUE, type='CSTR', c=1, size=42, data[0]: "/boot/home/mail/Erik's Mail/freelists.org"
0x0b 1 flags
CSTR 4 type
0x30 1 data length
0x0c 1 name length
ACTION_VAL 12 name (ACTION_VALUE)
0x2a 4 item size
/boot/home 42 data
2 padding to 8-byte boundary
//------------------------------------------------------------------------------
// An old example
Data Bytes Meaning
1BOF(ascii) 4 version
?? 4 ??
0x76 4 flattened size
DPUQ 4 what(B_QUERY_UPDATE)
?? 1 ??
0F 1 flags (including fixed chunk size)
GNOL 4 type
04 1 chunk size
06 1 name length
opcode 6 name
1 4 data(B_ENTRY_CREATED)
0F 1 flags (including fixed chunk size)
GNOL 4 type
04 1 chunk size
06 1 name length
device 6 name
4 4 data
0F 1 flags (including fixed chunk size)
GNLL 4 type
08 1 chunk size
09 1 name length
directory 9 name
524992 8 data
0F 1 flags (including fixed chunk size)
GNLL 4 type
08 1 chunk size
04 1 name length
node 4 name
524295 8 data
0B 1 flags (including variable chunk size)
RTSC 4 type
08 1 chunk size
04 1 name length
name 4 name
08 1 chunk size?
8 padded string?