xref: /haiku/headers/private/app/MessageAdapter.h (revision ca8ed5ea660fb6275799a3b7f138b201c41a667b)
1 /*
2  * Copyright 2007-2015, Haiku Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Michael Lotz <mmlr@mlotz.ch>
7  */
8 #ifndef _MESSAGE_ADAPTER_H_
9 #define _MESSAGE_ADAPTER_H_
10 
11 
12 #include <Message.h>
13 #include <util/KMessage.h>
14 
15 
16 // message formats
17 #define MESSAGE_FORMAT_R5				'FOB1'
18 #define MESSAGE_FORMAT_R5_SWAPPED		'1BOF'
19 #define MESSAGE_FORMAT_DANO				'FOB2'
20 #define MESSAGE_FORMAT_DANO_SWAPPED		'2BOF'
21 #define MESSAGE_FORMAT_HAIKU			'1FMH'
22 #define MESSAGE_FORMAT_HAIKU_SWAPPED	'HMF1'
23 
24 
25 namespace BPrivate {
26 
27 
28 class MessageAdapter {
29 public:
30 	static	ssize_t				FlattenedSize(uint32 format,
31 									const BMessage* from);
32 
33 	static	status_t			Flatten(uint32 format, const BMessage* from,
34 									char* buffer, ssize_t* size);
35 	static	status_t			Flatten(uint32 format, const BMessage* from,
36 									BDataIO* stream, ssize_t* size);
37 
38 	static	status_t			Unflatten(uint32 format, BMessage* into,
39 									const char* buffer);
40 	static	status_t			Unflatten(uint32 format, BMessage* into,
41 									BDataIO* stream);
42 
43 	static	status_t			ConvertToKMessage(const BMessage* from,
44 									KMessage& to);
45 
46 private:
47 	static	status_t			_ConvertFromKMessage(const KMessage* from,
48 									BMessage* to);
49 
50 	static	ssize_t				_R5FlattenedSize(const BMessage* from);
51 
52 	static	status_t			_FlattenR5Message(uint32 format,
53 									const BMessage* from, char* buffer,
54 									ssize_t* size);
55 
56 	static	status_t			_UnflattenR5Message(uint32 format,
57 									BMessage* into, BDataIO* stream);
58 	static	status_t			_UnflattenDanoMessage(uint32 format,
59 									BMessage* into, BDataIO* stream);
60 };
61 
62 
63 } // namespace BPrivate
64 
65 
66 #endif // _MESSAGE_ADAPTER_H_
67