/* * Copyright 2007-2015, Haiku Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: * Michael Lotz */ #ifndef _MESSAGE_ADAPTER_H_ #define _MESSAGE_ADAPTER_H_ #include #include // message formats #define MESSAGE_FORMAT_R5 'FOB1' #define MESSAGE_FORMAT_R5_SWAPPED '1BOF' #define MESSAGE_FORMAT_DANO 'FOB2' #define MESSAGE_FORMAT_DANO_SWAPPED '2BOF' #define MESSAGE_FORMAT_HAIKU '1FMH' #define MESSAGE_FORMAT_HAIKU_SWAPPED 'HMF1' namespace BPrivate { class MessageAdapter { public: static ssize_t FlattenedSize(uint32 format, const BMessage* from); static status_t Flatten(uint32 format, const BMessage* from, char* buffer, ssize_t* size); static status_t Flatten(uint32 format, const BMessage* from, BDataIO* stream, ssize_t* size); static status_t Unflatten(uint32 format, BMessage* into, const char* buffer); static status_t Unflatten(uint32 format, BMessage* into, BDataIO* stream); static status_t ConvertToKMessage(const BMessage* from, KMessage& to); private: static status_t _ConvertFromKMessage(const KMessage* from, BMessage* to); static ssize_t _R5FlattenedSize(const BMessage* from); static status_t _FlattenR5Message(uint32 format, const BMessage* from, char* buffer, ssize_t* size); static status_t _UnflattenR5Message(uint32 format, BMessage* into, BDataIO* stream); static status_t _UnflattenDanoMessage(uint32 format, BMessage* into, BDataIO* stream); }; } // namespace BPrivate #endif // _MESSAGE_ADAPTER_H_