From 395fb0895f9242f1099faec8f797f97b24c74d16 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Fri, 20 Nov 2009 11:04:12 +0000 Subject: [PATCH] Style cleanup. No functional change. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34152 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/util/KMessage.h | 425 +++++++++++++---------- src/system/kernel/messaging/KMessage.cpp | 297 ++++++++-------- 2 files changed, 392 insertions(+), 330 deletions(-) diff --git a/headers/private/kernel/util/KMessage.h b/headers/private/kernel/util/KMessage.h index d26305dda1..215c343444 100644 --- a/headers/private/kernel/util/KMessage.h +++ b/headers/private/kernel/util/KMessage.h @@ -1,9 +1,10 @@ /* - * Copyright 2005-2007, Ingo Weinhold, bonefish@users.sf.net. All rights reserved. + * Copyright 2005-2009, Ingo Weinhold, ingo_weinhold@gmx.de. * Distributed under the terms of the MIT License. */ -#ifndef KMESSAGE_H -#define KMESSAGE_H +#ifndef _KERNEL_UTIL_KMESSAGE_H +#define _KERNEL_UTIL_KMESSAGE_H + #include @@ -16,219 +17,267 @@ class BMessage; + namespace BPrivate { class KMessageField; class MessageAdapter; -// KMessage + class KMessage { public: - enum { - KMESSAGE_OWNS_BUFFER = 0x01, - KMESSAGE_INIT_FROM_BUFFER = 0x02, - KMESSAGE_READ_ONLY = 0x04, + enum { + KMESSAGE_OWNS_BUFFER = 0x01, + KMESSAGE_INIT_FROM_BUFFER = 0x02, + KMESSAGE_READ_ONLY = 0x04, - KMESSAGE_FLAG_MASK = 0x07, - }; + KMESSAGE_FLAG_MASK = 0x07, + }; - KMessage(); - KMessage(uint32 what); - ~KMessage(); +public: + KMessage(); + KMessage(uint32 what); + ~KMessage(); - status_t SetTo(uint32 what, uint32 flags = 0); - status_t SetTo(void *buffer, int32 bufferSize, uint32 what, - uint32 flags = 0); - status_t SetTo(const void *buffer, int32 bufferSize = -1); - void Unset(); + status_t SetTo(uint32 what, uint32 flags = 0); + status_t SetTo(void* buffer, int32 bufferSize, + uint32 what, uint32 flags = 0); + status_t SetTo(const void* buffer, + int32 bufferSize = -1); + void Unset(); - void SetWhat(uint32 what); - uint32 What() const; + void SetWhat(uint32 what); + uint32 What() const; - const void *Buffer() const; - int32 BufferCapacity() const; - int32 ContentSize() const; + const void* Buffer() const; + int32 BufferCapacity() const; + int32 ContentSize() const; - status_t AddField(const char *name, type_code type, int32 elementSize = -1, - KMessageField *field = NULL); - status_t FindField(const char *name, KMessageField *field) const; - status_t FindField(const char *name, type_code type, - KMessageField *field) const; - status_t GetNextField(KMessageField *field) const; - bool IsEmpty() const; + status_t AddField(const char* name, type_code type, + int32 elementSize = -1, + KMessageField* field = NULL); + status_t FindField(const char* name, + KMessageField* field) const; + status_t FindField(const char* name, type_code type, + KMessageField* field) const; + status_t GetNextField(KMessageField* field) const; + bool IsEmpty() const; - status_t AddData(const char *name, type_code type, const void *data, - int32 numBytes, bool isFixedSize = true); - status_t AddArray(const char *name, type_code type, const void *data, - int32 elementSize, int32 elementCount); - inline status_t AddBool(const char *name, bool value); - inline status_t AddInt8(const char *name, int8 value); - inline status_t AddInt16(const char *name, int16 value); - inline status_t AddInt32(const char *name, int32 value); - inline status_t AddInt64(const char *name, int64 value); - inline status_t AddPointer(const char *name, const void* value); - inline status_t AddString(const char *name, const char *value); + status_t AddData(const char* name, type_code type, + const void* data, int32 numBytes, + bool isFixedSize = true); + status_t AddArray(const char* name, type_code type, + const void* data, int32 elementSize, + int32 elementCount); + inline status_t AddBool(const char* name, bool value); + inline status_t AddInt8(const char* name, int8 value); + inline status_t AddInt16(const char* name, int16 value); + inline status_t AddInt32(const char* name, int32 value); + inline status_t AddInt64(const char* name, int64 value); + inline status_t AddPointer(const char* name, const void* value); + inline status_t AddString(const char* name, const char* value); - status_t FindData(const char *name, type_code type, - const void **data, int32 *numBytes) const; - status_t FindData(const char *name, type_code type, int32 index, - const void **data, int32 *numBytes) const; - inline status_t FindBool(const char *name, bool *value) const; - inline status_t FindBool(const char *name, int32 index, bool *value) const; - inline status_t FindInt8(const char *name, int8 *value) const; - inline status_t FindInt8(const char *name, int32 index, int8 *value) const; - inline status_t FindInt16(const char *name, int16 *value) const; - inline status_t FindInt16(const char *name, int32 index, int16 *value) const; - inline status_t FindInt32(const char *name, int32 *value) const; - inline status_t FindInt32(const char *name, int32 index, int32 *value) const; - inline status_t FindInt64(const char *name, int64 *value) const; - inline status_t FindInt64(const char *name, int32 index, int64 *value) const; - inline status_t FindPointer(const char *name, void** value) const; - inline status_t FindPointer(const char *name, int32 index, - void** value) const; - inline status_t FindString(const char *name, const char **value) const; - inline status_t FindString(const char *name, int32 index, - const char **value) const; + status_t FindData(const char* name, type_code type, + const void** data, int32* numBytes) const; + status_t FindData(const char* name, type_code type, + int32 index, const void** data, + int32* numBytes) const; + inline status_t FindBool(const char* name, bool* value) const; + inline status_t FindBool(const char* name, int32 index, + bool* value) const; + inline status_t FindInt8(const char* name, int8* value) const; + inline status_t FindInt8(const char* name, int32 index, + int8* value) const; + inline status_t FindInt16(const char* name, int16* value) const; + inline status_t FindInt16(const char* name, int32 index, + int16* value) const; + inline status_t FindInt32(const char* name, int32* value) const; + inline status_t FindInt32(const char* name, int32 index, + int32* value) const; + inline status_t FindInt64(const char* name, int64* value) const; + inline status_t FindInt64(const char* name, int32 index, + int64* value) const; + inline status_t FindPointer(const char* name, + void** value) const; + inline status_t FindPointer(const char* name, int32 index, + void** value) const; + inline status_t FindString(const char* name, + const char** value) const; + inline status_t FindString(const char* name, int32 index, + const char** value) const; - inline bool GetBool(const char* name, bool defaultValue) const; - inline bool GetBool(const char* name, int32 index, bool defaultValue) const; - inline int8 GetInt8(const char* name, int8 defaultValue) const; - inline int8 GetInt8(const char* name, int32 index, int8 defaultValue) const; - inline int16 GetInt16(const char* name, int16 defaultValue) const; - inline int16 GetInt16(const char* name, int32 index, - int16 defaultValue) const; - inline int32 GetInt32(const char* name, int32 defaultValue) const; - inline int32 GetInt32(const char* name, int32 index, - int32 defaultValue) const; - inline int64 GetInt64(const char* name, int64 defaultValue) const; - inline int64 GetInt64(const char* name, int32 index, - int64 defaultValue) const; - inline void* GetPointer(const char* name, const void* defaultValue) const; - inline void* GetPointer(const char* name, int32 index, - const void* defaultValue) const; - inline const char* GetString(const char* name, - const char* defaultValue) const; - inline const char* GetString(const char* name, int32 index, - const char* defaultValue) const; + inline bool GetBool(const char* name, + bool defaultValue) const; + inline bool GetBool(const char* name, int32 index, + bool defaultValue) const; + inline int8 GetInt8(const char* name, + int8 defaultValue) const; + inline int8 GetInt8(const char* name, int32 index, + int8 defaultValue) const; + inline int16 GetInt16(const char* name, + int16 defaultValue) const; + inline int16 GetInt16(const char* name, int32 index, + int16 defaultValue) const; + inline int32 GetInt32(const char* name, + int32 defaultValue) const; + inline int32 GetInt32(const char* name, int32 index, + int32 defaultValue) const; + inline int64 GetInt64(const char* name, + int64 defaultValue) const; + inline int64 GetInt64(const char* name, int32 index, + int64 defaultValue) const; + inline void* GetPointer(const char* name, + const void* defaultValue) const; + inline void* GetPointer(const char* name, int32 index, + const void* defaultValue) const; + inline const char* GetString(const char* name, + const char* defaultValue) const; + inline const char* GetString(const char* name, int32 index, + const char* defaultValue) const; // fixed size fields only - status_t SetData(const char* name, type_code type, const void* data, - int32 numBytes); - inline status_t SetBool(const char* name, bool value); - inline status_t SetInt8(const char* name, int8 value); - inline status_t SetInt16(const char* name, int16 value); - inline status_t SetInt32(const char* name, int32 value); - inline status_t SetInt64(const char* name, int64 value); - inline status_t SetPointer(const char* name, const void* value); + status_t SetData(const char* name, type_code type, + const void* data, int32 numBytes); + inline status_t SetBool(const char* name, bool value); + inline status_t SetInt8(const char* name, int8 value); + inline status_t SetInt16(const char* name, int16 value); + inline status_t SetInt32(const char* name, int32 value); + inline status_t SetInt64(const char* name, int64 value); + inline status_t SetPointer(const char* name, const void* value); // message delivery - team_id Sender() const; - int32 TargetToken() const; - port_id ReplyPort() const; - int32 ReplyToken() const; + team_id Sender() const; + int32 TargetToken() const; + port_id ReplyPort() const; + int32 ReplyToken() const; - void SetDeliveryInfo(int32 targetToken, port_id replyPort, - int32 replyToken, team_id senderTeam); + void SetDeliveryInfo(int32 targetToken, + port_id replyPort, int32 replyToken, + team_id senderTeam); - status_t SendTo(port_id targetPort, int32 targetToken = -1, - port_id replyPort = -1, int32 replyToken = -1, bigtime_t timeout = -1, - team_id senderTeam = -1); - status_t SendTo(port_id targetPort, int32 targetToken, - KMessage* reply, bigtime_t deliveryTimeout = -1, - bigtime_t replyTimeout = -1, team_id senderTeam = -1); - status_t SendReply(KMessage* message, port_id replyPort = -1, - int32 replyToken = -1, bigtime_t timeout = -1, team_id senderTeam = -1); - status_t SendReply(KMessage* message, KMessage* reply, - bigtime_t deliveryTimeout = -1, bigtime_t replyTimeout = -1, - team_id senderTeam = -1); - status_t ReceiveFrom(port_id fromPort, bigtime_t timeout = -1, - port_message_info* messageInfo = NULL); + status_t SendTo(port_id targetPort, + int32 targetToken = -1, + port_id replyPort = -1, + int32 replyToken = -1, + bigtime_t timeout = -1, + team_id senderTeam = -1); + status_t SendTo(port_id targetPort, int32 targetToken, + KMessage* reply, + bigtime_t deliveryTimeout = -1, + bigtime_t replyTimeout = -1, + team_id senderTeam = -1); + status_t SendReply(KMessage* message, + port_id replyPort = -1, + int32 replyToken = -1, + bigtime_t timeout = -1, + team_id senderTeam = -1); + status_t SendReply(KMessage* message, KMessage* reply, + bigtime_t deliveryTimeout = -1, + bigtime_t replyTimeout = -1, + team_id senderTeam = -1); + status_t ReceiveFrom(port_id fromPort, + bigtime_t timeout = -1, + port_message_info* messageInfo = NULL); - void Dump(void (*printFunc)(const char*, ...)) const; + void Dump(void (*printFunc)(const char*, ...)) const; private: - friend class KMessageField; - friend class MessageAdapter; - friend class ::BMessage; // not so nice, but makes things easier + friend class KMessageField; + friend class MessageAdapter; + friend class ::BMessage; // not so nice, but makes things easier - struct Header { - uint32 magic; - int32 size; - uint32 what; - team_id sender; - int32 targetToken; - port_id replyPort; - int32 replyToken; - }; + struct Header { + uint32 magic; + int32 size; + uint32 what; + team_id sender; + int32 targetToken; + port_id replyPort; + int32 replyToken; + }; - struct FieldHeader; - struct FieldValueHeader; + struct FieldHeader; + struct FieldValueHeader; - Header *_Header() const; - int32 _BufferOffsetFor(const void* data) const; - FieldHeader *_FirstFieldHeader() const; - FieldHeader *_LastFieldHeader() const; - FieldHeader *_FieldHeaderForOffset(int32 offset) const; - status_t _AddField(const char *name, type_code type, int32 elementSize, - KMessageField *field); - status_t _AddFieldData(KMessageField *field, const void *data, - int32 elementSize, int32 elementCount); +private: + Header* _Header() const; + int32 _BufferOffsetFor(const void* data) const; + FieldHeader* _FirstFieldHeader() const; + FieldHeader* _LastFieldHeader() const; + FieldHeader* _FieldHeaderForOffset(int32 offset) const; + status_t _AddField(const char* name, type_code type, + int32 elementSize, KMessageField* field); + status_t _AddFieldData(KMessageField* field, + const void* data, int32 elementSize, + int32 elementCount); - status_t _InitFromBuffer(bool sizeFromBuffer); - void _InitBuffer(uint32 what); + status_t _InitFromBuffer(bool sizeFromBuffer); + void _InitBuffer(uint32 what); - void _CheckBuffer(); // debugging only + void _CheckBuffer(); // debugging only - status_t _AllocateSpace(int32 size, bool alignAddress, bool alignSize, - void **address, int32 *alignedSize); - int32 _CapacityFor(int32 size); - template inline status_t _FindType(const char* name, - type_code type, int32 index, T *value) const; - template inline T _GetType(const char* name, type_code type, - int32 index, const T& defaultValue) const; + status_t _AllocateSpace(int32 size, bool alignAddress, + bool alignSize, void** address, + int32* alignedSize); + int32 _CapacityFor(int32 size); - Header fHeader; // pointed to by fBuffer, if nothing is - // allocated - void* fBuffer; - int32 fBufferCapacity; - uint32 fFlags; - int32 fLastFieldOffset; + template + inline status_t _FindType(const char* name, type_code type, + int32 index, T* value) const; - static const uint32 kMessageHeaderMagic; + template + inline T _GetType(const char* name, type_code type, + int32 index, const T& defaultValue) const; + +private: + Header fHeader; // pointed to by fBuffer, if nothing + // is allocated + void* fBuffer; + int32 fBufferCapacity; + uint32 fFlags; + int32 fLastFieldOffset; + + static const uint32 kMessageHeaderMagic; }; // KMessageField class KMessageField { public: - KMessageField(); + KMessageField(); - void Unset(); + void Unset(); - KMessage *Message() const; + KMessage* Message() const; - const char *Name() const; - type_code TypeCode() const; - bool HasFixedElementSize() const; - int32 ElementSize() const; // if HasFixedElementSize() + const char* Name() const; + type_code TypeCode() const; + bool HasFixedElementSize() const; + int32 ElementSize() const; + // only if HasFixedElementSize() - status_t AddElement(const void *data, int32 size = -1); - status_t AddElements(const void *data, int32 count, int32 elementSize = -1); - const void *ElementAt(int32 index, int32 *size = NULL) const; - int32 CountElements() const; + status_t AddElement(const void* data, int32 size = -1); + status_t AddElements(const void* data, int32 count, + int32 elementSize = -1); + const void* ElementAt(int32 index, + int32* size = NULL) const; + int32 CountElements() const; private: - void SetTo(KMessage *message, int32 headerOffset); + friend class KMessage; - KMessage::FieldHeader* _Header() const; +private: + void SetTo(KMessage* message, int32 headerOffset); - friend class KMessage; + KMessage::FieldHeader* _Header() const; - KMessage *fMessage; - int32 fHeaderOffset; +private: + KMessage* fMessage; + int32 fHeaderOffset; }; } // namespace BPrivate + using BPrivate::KMessage; using BPrivate::KMessageField; @@ -239,7 +288,7 @@ using BPrivate::KMessageField; // AddBool inline status_t -KMessage::AddBool(const char *name, bool value) +KMessage::AddBool(const char* name, bool value) { return AddData(name, B_BOOL_TYPE, &value, sizeof(bool), true); } @@ -247,7 +296,7 @@ KMessage::AddBool(const char *name, bool value) // AddInt8 inline status_t -KMessage::AddInt8(const char *name, int8 value) +KMessage::AddInt8(const char* name, int8 value) { return AddData(name, B_INT8_TYPE, &value, sizeof(int8), true); } @@ -255,7 +304,7 @@ KMessage::AddInt8(const char *name, int8 value) // AddInt16 inline status_t -KMessage::AddInt16(const char *name, int16 value) +KMessage::AddInt16(const char* name, int16 value) { return AddData(name, B_INT16_TYPE, &value, sizeof(int16), true); } @@ -263,14 +312,14 @@ KMessage::AddInt16(const char *name, int16 value) // AddInt32 inline status_t -KMessage::AddInt32(const char *name, int32 value) +KMessage::AddInt32(const char* name, int32 value) { return AddData(name, B_INT32_TYPE, &value, sizeof(int32), true); } // AddInt64 inline status_t -KMessage::AddInt64(const char *name, int64 value) +KMessage::AddInt64(const char* name, int64 value) { return AddData(name, B_INT64_TYPE, &value, sizeof(int64), true); } @@ -278,7 +327,7 @@ KMessage::AddInt64(const char *name, int64 value) // AddPointer inline status_t -KMessage::AddPointer(const char *name, const void* value) +KMessage::AddPointer(const char* name, const void* value) { return AddData(name, B_POINTER_TYPE, &value, sizeof(value), true); } @@ -287,7 +336,7 @@ KMessage::AddPointer(const char *name, const void* value) // AddString inline status_t -KMessage::AddString(const char *name, const char *value) +KMessage::AddString(const char* name, const char* value) { if (!value) return B_BAD_VALUE; @@ -302,9 +351,9 @@ KMessage::AddString(const char *name, const char *value) template inline status_t KMessage::_FindType(const char* name, type_code type, int32 index, - T *value) const + T* value) const { - const void *data; + const void* data; int32 size; status_t error = FindData(name, type, index, &data, &size); if (error != B_OK) @@ -321,7 +370,7 @@ KMessage::_FindType(const char* name, type_code type, int32 index, // FindBool inline status_t -KMessage::FindBool(const char *name, bool *value) const +KMessage::FindBool(const char* name, bool* value) const { return FindBool(name, 0, value); } @@ -329,7 +378,7 @@ KMessage::FindBool(const char *name, bool *value) const // FindBool inline status_t -KMessage::FindBool(const char *name, int32 index, bool *value) const +KMessage::FindBool(const char* name, int32 index, bool* value) const { return _FindType(name, B_BOOL_TYPE, index, value); } @@ -337,7 +386,7 @@ KMessage::FindBool(const char *name, int32 index, bool *value) const // FindInt8 inline status_t -KMessage::FindInt8(const char *name, int8 *value) const +KMessage::FindInt8(const char* name, int8* value) const { return FindInt8(name, 0, value); } @@ -345,7 +394,7 @@ KMessage::FindInt8(const char *name, int8 *value) const // FindInt8 inline status_t -KMessage::FindInt8(const char *name, int32 index, int8 *value) const +KMessage::FindInt8(const char* name, int32 index, int8* value) const { return _FindType(name, B_INT8_TYPE, index, value); } @@ -353,7 +402,7 @@ KMessage::FindInt8(const char *name, int32 index, int8 *value) const // FindInt16 inline status_t -KMessage::FindInt16(const char *name, int16 *value) const +KMessage::FindInt16(const char* name, int16* value) const { return FindInt16(name, 0, value); } @@ -361,7 +410,7 @@ KMessage::FindInt16(const char *name, int16 *value) const // FindInt16 inline status_t -KMessage::FindInt16(const char *name, int32 index, int16 *value) const +KMessage::FindInt16(const char* name, int32 index, int16* value) const { return _FindType(name, B_INT16_TYPE, index, value); } @@ -369,7 +418,7 @@ KMessage::FindInt16(const char *name, int32 index, int16 *value) const // FindInt32 inline status_t -KMessage::FindInt32(const char *name, int32 *value) const +KMessage::FindInt32(const char* name, int32* value) const { return FindInt32(name, 0, value); } @@ -377,7 +426,7 @@ KMessage::FindInt32(const char *name, int32 *value) const // FindInt32 inline status_t -KMessage::FindInt32(const char *name, int32 index, int32 *value) const +KMessage::FindInt32(const char* name, int32 index, int32* value) const { return _FindType(name, B_INT32_TYPE, index, value); } @@ -385,7 +434,7 @@ KMessage::FindInt32(const char *name, int32 index, int32 *value) const // FindInt64 inline status_t -KMessage::FindInt64(const char *name, int64 *value) const +KMessage::FindInt64(const char* name, int64* value) const { return FindInt64(name, 0, value); } @@ -393,7 +442,7 @@ KMessage::FindInt64(const char *name, int64 *value) const // FindInt64 inline status_t -KMessage::FindInt64(const char *name, int32 index, int64 *value) const +KMessage::FindInt64(const char* name, int32 index, int64* value) const { return _FindType(name, B_INT64_TYPE, index, value); } @@ -401,7 +450,7 @@ KMessage::FindInt64(const char *name, int32 index, int64 *value) const // FindPointer inline status_t -KMessage::FindPointer(const char *name, void** value) const +KMessage::FindPointer(const char* name, void** value) const { return FindPointer(name, 0, value); } @@ -409,7 +458,7 @@ KMessage::FindPointer(const char *name, void** value) const // FindPointer inline status_t -KMessage::FindPointer(const char *name, int32 index, void** value) const +KMessage::FindPointer(const char* name, int32 index, void** value) const { return _FindType(name, B_POINTER_TYPE, index, value); } @@ -418,7 +467,7 @@ KMessage::FindPointer(const char *name, int32 index, void** value) const // FindString inline status_t -KMessage::FindString(const char *name, const char **value) const +KMessage::FindString(const char* name, const char** value) const { return FindString(name, 0, value); } @@ -426,7 +475,7 @@ KMessage::FindString(const char *name, const char **value) const // FindString inline status_t -KMessage::FindString(const char *name, int32 index, const char **value) const +KMessage::FindString(const char* name, int32 index, const char** value) const { int32 size; return FindData(name, B_STRING_TYPE, index, (const void**)value, &size); diff --git a/src/system/kernel/messaging/KMessage.cpp b/src/system/kernel/messaging/KMessage.cpp index b0e828e385..00197cafec 100644 --- a/src/system/kernel/messaging/KMessage.cpp +++ b/src/system/kernel/messaging/KMessage.cpp @@ -1,8 +1,9 @@ /* - * Copyright 2005-2007, Ingo Weinhold, bonefish@users.sf.net. - * All rights reserved. Distributed under the terms of the MIT License. + * Copyright 2005-2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Distributed under the terms of the MIT License. */ + #include #include @@ -13,17 +14,18 @@ #include #include + #if defined(_BOOT_MODE) || defined(_LOADER_MODE) # include #else # include #endif -using std::nothrow; // TODO: Add a field index using a hash map, so that lookup improves to O(1) // (is now O(n)). + // define the PANIC macro #ifndef PANIC # ifdef _KERNEL_MODE @@ -33,43 +35,49 @@ using std::nothrow; # endif #endif + static const int32 kMessageReallocChunkSize = 64; -// kMessageHeaderMagic const uint32 KMessage::kMessageHeaderMagic = 'kMsG'; -// _Align -static inline -int32 + +// #pragma mark - Helper Functions + +static inline int32 _Align(int32 offset) { return (offset + 3) & ~0x3; } -// _Align -static inline -void* -_Align(void *address, int32 offset = 0) + +static inline void* +_Align(void* address, int32 offset = 0) { return (void*)(((uint32)address + offset + 3) & ~0x3); } -// FieldValueHeader + +// #pragma mark - FieldValueHeader + + struct KMessage::FieldValueHeader { int32 size; - void *Data() + void* Data() { return _Align(this, sizeof(FieldValueHeader)); } - FieldValueHeader *NextFieldValueHeader() + FieldValueHeader* NextFieldValueHeader() { return (FieldValueHeader*)_Align(Data(), size); } }; -// FieldHeader + +// #pragma mark - FieldHeader + + struct KMessage::FieldHeader { type_code type; int32 elementSize; // if < 0: non-fixed size @@ -78,64 +86,72 @@ struct KMessage::FieldHeader { int16 headerSize; char name[1]; - void *Data() + void* Data() { return (uint8*)this + headerSize; } - bool HasFixedElementSize() { return (elementSize >= 0); } + bool HasFixedElementSize() + { + return elementSize >= 0; + } - void *ElementAt(int32 index, int32 *size) + void* ElementAt(int32 index, int32* size) { if (index < 0 || index >= elementCount) return NULL; - uint8 *data = (uint8*)this + headerSize; + uint8* data = (uint8*)this + headerSize; if (HasFixedElementSize()) { *size = elementSize; return data + elementSize * index; } // non-fixed element size: we need to iterate - FieldValueHeader *valueHeader = (FieldValueHeader *)data; + FieldValueHeader* valueHeader = (FieldValueHeader*)data; for (int i = 0; i < index; i++) valueHeader = valueHeader->NextFieldValueHeader(); *size = valueHeader->size; return valueHeader->Data(); } - FieldHeader *NextFieldHeader() + FieldHeader* NextFieldHeader() { return (FieldHeader*)_Align(this, fieldSize); } }; -// constructor + +// #pragma mark - KMessage + + KMessage::KMessage() - : fBuffer(NULL), - fBufferCapacity(0), - fFlags(0), - fLastFieldOffset(0) + : + fBuffer(NULL), + fBufferCapacity(0), + fFlags(0), + fLastFieldOffset(0) { Unset(); } -// constructor + KMessage::KMessage(uint32 what) - : fBuffer(NULL), - fBufferCapacity(0), - fFlags(0), - fLastFieldOffset(0) + : + fBuffer(NULL), + fBufferCapacity(0), + fFlags(0), + fLastFieldOffset(0) { Unset(); SetWhat(what); } -// destructor + KMessage::~KMessage() { Unset(); } -// SetTo + status_t KMessage::SetTo(uint32 what, uint32 flags) { @@ -145,9 +161,9 @@ KMessage::SetTo(uint32 what, uint32 flags) return B_OK; } -// SetTo + status_t -KMessage::SetTo(void *buffer, int32 bufferSize, uint32 what, uint32 flags) +KMessage::SetTo(void* buffer, int32 bufferSize, uint32 what, uint32 flags) { Unset(); @@ -180,15 +196,15 @@ KMessage::SetTo(void *buffer, int32 bufferSize, uint32 what, uint32 flags) return error; } -// SetTo + status_t -KMessage::SetTo(const void *buffer, int32 bufferSize) +KMessage::SetTo(const void* buffer, int32 bufferSize) { return SetTo(const_cast(buffer), bufferSize, 0, KMESSAGE_INIT_FROM_BUFFER | KMESSAGE_READ_ONLY); } -// Unset + void KMessage::Unset() { @@ -200,44 +216,44 @@ KMessage::Unset() _InitBuffer(0); } -// SetWhat + void KMessage::SetWhat(uint32 what) { _Header()->what = what; } -// What + uint32 KMessage::What() const { return _Header()->what; } -// Buffer -const void * + +const void* KMessage::Buffer() const { return fBuffer; } -// BufferCapacity + int32 KMessage::BufferCapacity() const { return fBufferCapacity; } -// ContentSize + int32 KMessage::ContentSize() const { return _Header()->size; } -// AddField + status_t -KMessage::AddField(const char *name, type_code type, int32 elementSize, +KMessage::AddField(const char* name, type_code type, int32 elementSize, KMessageField* field) { if (!name || type == B_ANY_TYPE) @@ -248,17 +264,17 @@ KMessage::AddField(const char *name, type_code type, int32 elementSize, return _AddField(name, type, elementSize, field); } -// FindField + status_t -KMessage::FindField(const char *name, KMessageField *field) const +KMessage::FindField(const char* name, KMessageField* field) const { return FindField(name, B_ANY_TYPE, field); } -// FindField + status_t -KMessage::FindField(const char *name, type_code type, - KMessageField *field) const +KMessage::FindField(const char* name, type_code type, + KMessageField* field) const { if (!name) return B_BAD_VALUE; @@ -276,13 +292,13 @@ KMessage::FindField(const char *name, type_code type, return B_NAME_NOT_FOUND; } -// GetNextField + status_t -KMessage::GetNextField(KMessageField *field) const +KMessage::GetNextField(KMessageField* field) const { if (!field || (field->Message() != NULL && field->Message() != this)) return B_BAD_VALUE; - FieldHeader *fieldHeader = field->_Header(); + FieldHeader* fieldHeader = field->_Header(); FieldHeader* lastField = _LastFieldHeader(); if (!lastField) return B_NAME_NOT_FOUND; @@ -309,9 +325,8 @@ KMessage::IsEmpty() const } -// AddData status_t -KMessage::AddData(const char *name, type_code type, const void *data, +KMessage::AddData(const char* name, type_code type, const void* data, int32 numBytes, bool isFixedSize) { if (!name || type == B_ANY_TYPE || !data || numBytes < 0) @@ -331,9 +346,9 @@ KMessage::AddData(const char *name, type_code type, const void *data, return _AddFieldData(&field, data, numBytes, 1); } -// AddArray + status_t -KMessage::AddArray(const char *name, type_code type, const void *data, +KMessage::AddArray(const char* name, type_code type, const void* data, int32 elementSize, int32 elementCount) { if (!name || type == B_ANY_TYPE || !data || elementSize < 0 @@ -355,7 +370,6 @@ KMessage::AddArray(const char *name, type_code type, const void *data, } -// SetData status_t KMessage::SetData(const char* name, type_code type, const void* data, int32 numBytes) @@ -390,18 +404,17 @@ KMessage::SetData(const char* name, type_code type, const void* data, } -// FindData status_t -KMessage::FindData(const char *name, type_code type, const void **data, - int32 *numBytes) const +KMessage::FindData(const char* name, type_code type, const void** data, + int32* numBytes) const { return FindData(name, type, 0, data, numBytes); } -// FindData + status_t -KMessage::FindData(const char *name, type_code type, int32 index, - const void **data, int32 *numBytes) const +KMessage::FindData(const char* name, type_code type, int32 index, + const void** data, int32* numBytes) const { if (!name || !data || !numBytes) return B_BAD_VALUE; @@ -409,7 +422,7 @@ KMessage::FindData(const char *name, type_code type, int32 index, status_t error = FindField(name, type, &field); if (error != B_OK) return error; - const void *foundData = field.ElementAt(index, numBytes); + const void* foundData = field.ElementAt(index, numBytes); if (!foundData) return B_BAD_INDEX; if (data) @@ -417,35 +430,35 @@ KMessage::FindData(const char *name, type_code type, int32 index, return B_OK; } -// Sender + team_id KMessage::Sender() const { return _Header()->sender; } -// TargetToken + int32 KMessage::TargetToken() const { return _Header()->targetToken; } -// ReplyPort + port_id KMessage::ReplyPort() const { return _Header()->replyPort; } -// ReplyToken + int32 KMessage::ReplyToken() const { return _Header()->replyToken; } -// SetDeliveryInfo + void KMessage::SetDeliveryInfo(int32 targetToken, port_id replyPort, int32 replyToken, team_id senderTeam) @@ -458,9 +471,10 @@ KMessage::SetDeliveryInfo(int32 targetToken, port_id replyPort, header->sender = senderTeam; } + #ifndef KMESSAGE_CONTAINER_ONLY -// SendTo + status_t KMessage::SendTo(port_id targetPort, int32 targetToken, port_id replyPort, int32 replyToken, bigtime_t timeout, team_id senderTeam) @@ -485,7 +499,7 @@ KMessage::SendTo(port_id targetPort, int32 targetToken, port_id replyPort, B_RELATIVE_TIMEOUT, timeout); } -// SendTo + status_t KMessage::SendTo(port_id targetPort, int32 targetToken, KMessage* reply, bigtime_t deliveryTimeout, bigtime_t replyTimeout, team_id senderTeam) @@ -540,7 +554,7 @@ KMessage::SendTo(port_id targetPort, int32 targetToken, KMessage* reply, return B_OK; } -// SendReply + status_t KMessage::SendReply(KMessage* message, port_id replyPort, int32 replyToken, bigtime_t timeout, team_id senderTeam) @@ -551,7 +565,7 @@ KMessage::SendReply(KMessage* message, port_id replyPort, int32 replyToken, timeout, senderTeam); } -// SendReply + status_t KMessage::SendReply(KMessage* message, KMessage* reply, bigtime_t deliveryTimeout, bigtime_t replyTimeout, team_id senderTeam) @@ -563,7 +577,6 @@ KMessage::SendReply(KMessage* message, KMessage* reply, } -// ReceiveFrom status_t KMessage::ReceiveFrom(port_id fromPort, bigtime_t timeout, port_message_info* messageInfo) @@ -606,6 +619,7 @@ KMessage::ReceiveFrom(port_id fromPort, bigtime_t timeout, KMESSAGE_OWNS_BUFFER | KMESSAGE_INIT_FROM_BUFFER); } + #endif // !KMESSAGE_CONTAINER_ONLY @@ -671,38 +685,37 @@ KMessage::Dump(void (*printFunc)(const char*, ...)) const } -// _Header -KMessage::Header * +KMessage::Header* KMessage::_Header() const { return (Header*)fBuffer; } -// _BufferOffsetFor + int32 KMessage::_BufferOffsetFor(const void* data) const { if (!data) return -1; - return ((uint8*)data - (uint8*)fBuffer); + return (uint8*)data - (uint8*)fBuffer; } -// _FirstFieldHeader -KMessage::FieldHeader * + +KMessage::FieldHeader* KMessage::_FirstFieldHeader() const { return (FieldHeader*)_Align(fBuffer, sizeof(Header)); } -// _LastFieldHeader -KMessage::FieldHeader * + +KMessage::FieldHeader* KMessage::_LastFieldHeader() const { return _FieldHeaderForOffset(fLastFieldOffset); } -// _FieldHeaderForOffset -KMessage::FieldHeader * + +KMessage::FieldHeader* KMessage::_FieldHeaderForOffset(int32 offset) const { if (offset <= 0 || offset >= _Header()->size) @@ -710,12 +723,12 @@ KMessage::_FieldHeaderForOffset(int32 offset) const return (FieldHeader*)((uint8*)fBuffer + offset); } -// _AddField + status_t -KMessage::_AddField(const char *name, type_code type, int32 elementSize, - KMessageField *field) +KMessage::_AddField(const char* name, type_code type, int32 elementSize, + KMessageField* field) { - FieldHeader *fieldHeader; + FieldHeader* fieldHeader; int32 alignedSize; status_t error = _AllocateSpace(sizeof(FieldHeader) + strlen(name), true, true, (void**)&fieldHeader, &alignedSize); @@ -733,14 +746,14 @@ KMessage::_AddField(const char *name, type_code type, int32 elementSize, return B_OK; } -// _AddFieldData + status_t -KMessage::_AddFieldData(KMessageField *field, const void *data, +KMessage::_AddFieldData(KMessageField* field, const void* data, int32 elementSize, int32 elementCount) { if (!field) return B_BAD_VALUE; - FieldHeader *fieldHeader = field->_Header(); + FieldHeader* fieldHeader = field->_Header(); FieldHeader* lastField = _LastFieldHeader(); if (!fieldHeader || fieldHeader != lastField || !data || elementSize < 0 || elementCount < 0) { @@ -752,7 +765,7 @@ KMessage::_AddFieldData(KMessageField *field, const void *data, if (fieldHeader->HasFixedElementSize()) { if (elementSize != fieldHeader->elementSize) return B_BAD_VALUE; - void *address; + void* address; int32 alignedSize; status_t error = _AllocateSpace(elementSize * elementCount, (fieldHeader->elementCount == 0), false, &address, &alignedSize); @@ -770,14 +783,14 @@ KMessage::_AddFieldData(KMessageField *field, const void *data, int32 valueHeaderSize = _Align(sizeof(FieldValueHeader)); int32 entrySize = valueHeaderSize + elementSize; for (int32 i = 0; i < elementCount; i++) { - void *address; + void* address; int32 alignedSize; status_t error = _AllocateSpace(entrySize, true, false, &address, &alignedSize); if (error != B_OK) return error; fieldHeader = field->_Header(); // might have been relocated - FieldValueHeader *valueHeader = (FieldValueHeader*)address; + FieldValueHeader* valueHeader = (FieldValueHeader*)address; valueHeader->size = elementSize; memcpy(valueHeader->Data(), (const uint8*)data + i * elementSize, elementSize); @@ -788,13 +801,13 @@ KMessage::_AddFieldData(KMessageField *field, const void *data, return B_OK; } -// _InitFromBuffer + status_t KMessage::_InitFromBuffer(bool sizeFromBuffer) { if (!fBuffer || _Align(fBuffer) != fBuffer) return B_BAD_DATA; - Header *header = _Header(); + Header* header = _Header(); if (sizeFromBuffer) fBufferCapacity = header->size; @@ -809,8 +822,8 @@ KMessage::_InitFromBuffer(bool sizeFromBuffer) return B_BAD_DATA; // check the fields - FieldHeader *fieldHeader = NULL; - uint8 *data = (uint8*)_FirstFieldHeader(); + FieldHeader* fieldHeader = NULL; + uint8* data = (uint8*)_FirstFieldHeader(); int32 remainingBytes = (uint8*)fBuffer + header->size - data; while (remainingBytes > 0) { if (remainingBytes < (int)sizeof(FieldHeader)) @@ -842,14 +855,14 @@ KMessage::_InitFromBuffer(bool sizeFromBuffer) fieldSize = (uint8*)fieldHeader->Data() + dataSize - data; } else { // non-fixed element size - FieldValueHeader *valueHeader - = (FieldValueHeader *)fieldHeader->Data(); + FieldValueHeader* valueHeader + = (FieldValueHeader*)fieldHeader->Data(); for (int32 i = 0; i < fieldHeader->elementCount; i++) { remainingBytes = (uint8*)fBuffer + header->size - (uint8*)valueHeader; if (remainingBytes < (int)sizeof(FieldValueHeader)) return B_BAD_DATA; - uint8 *value = (uint8*)valueHeader->Data(); + uint8* value = (uint8*)valueHeader->Data(); remainingBytes = (uint8*)fBuffer + header->size - (uint8*)value; if (remainingBytes < valueHeader->size) return B_BAD_DATA; @@ -866,11 +879,11 @@ KMessage::_InitFromBuffer(bool sizeFromBuffer) return B_OK; } -// _InitBuffer + void KMessage::_InitBuffer(uint32 what) { - Header *header = _Header(); + Header* header = _Header(); header->magic = kMessageHeaderMagic; header->size = sizeof(Header); header->what = what; @@ -881,7 +894,7 @@ KMessage::_InitBuffer(uint32 what) fLastFieldOffset = 0; } -// _CheckBuffer + void KMessage::_CheckBuffer() { @@ -894,10 +907,10 @@ KMessage::_CheckBuffer() } } -// _AllocateSpace + status_t KMessage::_AllocateSpace(int32 size, bool alignAddress, bool alignSize, - void **address, int32 *alignedSize) + void** address, int32* alignedSize) { if (fBuffer != &fHeader && (fFlags & KMESSAGE_READ_ONLY)) return B_NOT_ALLOWED; @@ -911,7 +924,7 @@ KMessage::_AllocateSpace(int32 size, bool alignAddress, bool alignSize, // reallocate if necessary if (fBuffer == &fHeader) { int32 newCapacity = _CapacityFor(newSize); - void *newBuffer = malloc(newCapacity); + void* newBuffer = malloc(newCapacity); if (!newBuffer) return B_NO_MEMORY; fBuffer = newBuffer; @@ -924,7 +937,7 @@ KMessage::_AllocateSpace(int32 size, bool alignAddress, bool alignSize, if (!(fFlags & KMESSAGE_OWNS_BUFFER)) return B_BUFFER_OVERFLOW; int32 newCapacity = _CapacityFor(newSize); - void *newBuffer = realloc(fBuffer, newCapacity); + void* newBuffer = realloc(fBuffer, newCapacity); if (!newBuffer) return B_NO_MEMORY; fBuffer = newBuffer; @@ -937,7 +950,7 @@ KMessage::_AllocateSpace(int32 size, bool alignAddress, bool alignSize, return B_OK; } -// _CapacityFor + int32 KMessage::_CapacityFor(int32 size) { @@ -946,16 +959,17 @@ KMessage::_CapacityFor(int32 size) } -// #pragma mark - +// #pragma mark - KMessageField + -// constructor KMessageField::KMessageField() - : fMessage(NULL), - fHeaderOffset(0) + : + fMessage(NULL), + fHeaderOffset(0) { } -// Unset + void KMessageField::Unset() { @@ -963,48 +977,48 @@ KMessageField::Unset() fHeaderOffset = 0; } -// Message -KMessage * + +KMessage* KMessageField::Message() const { return fMessage; } -// Name -const char * + +const char* KMessageField::Name() const { KMessage::FieldHeader* header = _Header(); - return (header ? header->name : NULL); + return header ? header->name : NULL; } -// TypeCode + type_code KMessageField::TypeCode() const { KMessage::FieldHeader* header = _Header(); - return (header ? header->type : 0); + return header ? header->type : 0; } -// HasFixedElementSize + bool KMessageField::HasFixedElementSize() const { KMessage::FieldHeader* header = _Header(); - return (header ? header->HasFixedElementSize() : false); + return header ? header->HasFixedElementSize() : false; } -// ElementSize + int32 KMessageField::ElementSize() const { KMessage::FieldHeader* header = _Header(); - return (header ? header->elementSize : -1); + return header ? header->elementSize : -1; } -// AddElement + status_t -KMessageField::AddElement(const void *data, int32 size) +KMessageField::AddElement(const void* data, int32 size) { KMessage::FieldHeader* header = _Header(); if (!header || !data) @@ -1017,9 +1031,9 @@ KMessageField::AddElement(const void *data, int32 size) return fMessage->_AddFieldData(this, data, size, 1); } -// AddElements + status_t -KMessageField::AddElements(const void *data, int32 count, int32 elementSize) +KMessageField::AddElements(const void* data, int32 count, int32 elementSize) { KMessage::FieldHeader* header = _Header(); if (!header || !data || count < 0) @@ -1032,34 +1046,33 @@ KMessageField::AddElements(const void *data, int32 count, int32 elementSize) return fMessage->_AddFieldData(this, data, elementSize, count); } -// ElementAt -const void * -KMessageField::ElementAt(int32 index, int32 *size) const + +const void* +KMessageField::ElementAt(int32 index, int32* size) const { KMessage::FieldHeader* header = _Header(); - return (header ? header->ElementAt(index, size) : NULL); + return header ? header->ElementAt(index, size) : NULL; } -// CountElements + int32 KMessageField::CountElements() const { KMessage::FieldHeader* header = _Header(); - return (header ? header->elementCount : 0); + return header ? header->elementCount : 0; } -// SetTo + void -KMessageField::SetTo(KMessage *message, int32 headerOffset) +KMessageField::SetTo(KMessage* message, int32 headerOffset) { fMessage = message; fHeaderOffset = headerOffset; } -// _GetHeader + KMessage::FieldHeader* KMessageField::_Header() const { - return (fMessage ? fMessage->_FieldHeaderForOffset(fHeaderOffset) : NULL); + return fMessage ? fMessage->_FieldHeaderForOffset(fHeaderOffset) : NULL; } -