Added big endian support for R5 messages, minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15804 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -92,13 +92,13 @@ BPrivate::dano_message_flattened_size(const char *buffer)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
BPrivate::unflatten_dano_message(uint32 magic, BDataIO &stream,
|
BPrivate::unflatten_dano_message(uint32 format, BDataIO &stream,
|
||||||
BMessage &message)
|
BMessage &message)
|
||||||
{
|
{
|
||||||
TReadHelper reader(&stream);
|
TReadHelper reader(&stream);
|
||||||
message.MakeEmpty();
|
message.MakeEmpty();
|
||||||
|
|
||||||
if (magic == kMessageFormatSwapped)
|
if (format == kMessageFormatSwapped)
|
||||||
reader.SetSwap(true);
|
reader.SetSwap(true);
|
||||||
|
|
||||||
ssize_t size;
|
ssize_t size;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class BDataIO;
|
|||||||
|
|
||||||
namespace BPrivate {
|
namespace BPrivate {
|
||||||
|
|
||||||
status_t unflatten_dano_message(uint32 magic, BDataIO& stream, BMessage& message);
|
status_t unflatten_dano_message(uint32 format, BDataIO& stream, BMessage& message);
|
||||||
ssize_t dano_message_flattened_size(const char* buffer);
|
ssize_t dano_message_flattened_size(const char* buffer);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -274,21 +274,24 @@ flatten_r5_message(const BMessage *message, BDataIO *stream, ssize_t *_size)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
unflatten_r5_message(BMessage *message, const char *flatBuffer)
|
unflatten_r5_message(uint32 format, BMessage *message, const char *flatBuffer)
|
||||||
{
|
{
|
||||||
r5_message_header *r5header = (r5_message_header *)flatBuffer;
|
r5_message_header *r5header = (r5_message_header *)flatBuffer;
|
||||||
BMemoryIO stream(flatBuffer + 4, r5header->flattened_size - 4);
|
BMemoryIO stream(flatBuffer + 4, r5header->flattened_size - 4);
|
||||||
return unflatten_r5_message(message, &stream);
|
return unflatten_r5_message(format, message, &stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
unflatten_r5_message(BMessage *message, BDataIO *stream)
|
unflatten_r5_message(uint32 format, BMessage *message, BDataIO *stream)
|
||||||
{
|
{
|
||||||
TReadHelper reader(stream);
|
TReadHelper reader(stream);
|
||||||
BMessage::Private messagePrivate(message);
|
BMessage::Private messagePrivate(message);
|
||||||
BMessage::message_header *header = messagePrivate.GetMessageHeader();
|
BMessage::message_header *header = messagePrivate.GetMessageHeader();
|
||||||
|
|
||||||
|
if (format == kR5MessageMagicSwapped)
|
||||||
|
reader.SetSwap(true);
|
||||||
|
|
||||||
// the stream is already advanced by the size of the "format"
|
// the stream is already advanced by the size of the "format"
|
||||||
r5_message_header r5header;
|
r5_message_header r5header;
|
||||||
reader(((uint8 *)&r5header) + sizeof(uint32),
|
reader(((uint8 *)&r5header) + sizeof(uint32),
|
||||||
@@ -364,7 +367,7 @@ unflatten_r5_message(BMessage *message, BDataIO *stream)
|
|||||||
|
|
||||||
char nameBuffer[256];
|
char nameBuffer[256];
|
||||||
reader(nameBuffer, nameLength);
|
reader(nameBuffer, nameLength);
|
||||||
nameBuffer[nameLength] = 0;
|
nameBuffer[nameLength] = '\0';
|
||||||
|
|
||||||
uint8 *buffer = (uint8 *)malloc(dataSize);
|
uint8 *buffer = (uint8 *)malloc(dataSize);
|
||||||
uint8 *pointer = buffer;
|
uint8 *pointer = buffer;
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ namespace BPrivate {
|
|||||||
ssize_t r5_message_flattened_size(const BMessage *message);
|
ssize_t r5_message_flattened_size(const BMessage *message);
|
||||||
status_t flatten_r5_message(const BMessage *message, char *buffer, ssize_t size);
|
status_t flatten_r5_message(const BMessage *message, char *buffer, ssize_t size);
|
||||||
status_t flatten_r5_message(const BMessage *message, BDataIO *stream, ssize_t *size);
|
status_t flatten_r5_message(const BMessage *message, BDataIO *stream, ssize_t *size);
|
||||||
status_t unflatten_r5_message(BMessage *message, const char *flatBuffer);
|
status_t unflatten_r5_message(uint32 format, BMessage *message, const char *flatBuffer);
|
||||||
status_t unflatten_r5_message(BMessage *message, BDataIO *stream);
|
status_t unflatten_r5_message(uint32 format, BMessage *message, BDataIO *stream);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user