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