diff --git a/headers/os/app/Messenger.h b/headers/os/app/Messenger.h index 5eb464f957..68d7b4fbb6 100644 --- a/headers/os/app/Messenger.h +++ b/headers/os/app/Messenger.h @@ -89,11 +89,15 @@ public: team_id Team() const; //----- Private or reserved ----------------------------------------- + + class Private; + private: friend class BRoster; friend class BPrivate::TRoster; friend class BMessage; friend class BQuery; + friend class Private; friend inline void _set_message_reply_(BMessage *, BMessenger); friend status_t swap_data(type_code, void *, size_t, swap_action); friend bool operator<(const BMessenger &a, const BMessenger &b); diff --git a/headers/private/app/MessagePrivate.h b/headers/private/app/MessagePrivate.h index 4bc93f4fcf..b1eadfe4fa 100644 --- a/headers/private/app/MessagePrivate.h +++ b/headers/private/app/MessagePrivate.h @@ -9,6 +9,9 @@ // Standard Includes ----------------------------------------------------------- // System Includes ------------------------------------------------------------- +#include +#include +#include // Project Includes ------------------------------------------------------------ @@ -35,10 +38,11 @@ class BMessage::Private } inline void SetReply(BMessenger messenger) { - fMessage->fReplyTo.port = messenger.fPort; - fMessage->fReplyTo.target = messenger.fHandlerToken; - fMessage->fReplyTo.team = messenger.fTeam; - fMessage->fReplyTo.preferred = messenger.fPreferredTarget; + BMessenger::Private mp(messenger); + fMessage->fReplyTo.port = mp.Port(); + fMessage->fReplyTo.target = mp.Token(); + fMessage->fReplyTo.team = mp.Team(); + fMessage->fReplyTo.preferred = mp.IsPreferredTarget(); } inline int32 GetTarget() { diff --git a/headers/private/app/MessengerPrivate.h b/headers/private/app/MessengerPrivate.h new file mode 100644 index 0000000000..cef34b7e05 --- /dev/null +++ b/headers/private/app/MessengerPrivate.h @@ -0,0 +1,25 @@ +#ifndef MESSENGERPRIVAGE_H +#define MESSENGERPRIVATE_H + +#include + +class BMessenger::Private +{ + public: + Private(BMessenger* msnger) : fMessenger(msnger) {;} + Private(BMessenger& msnger) : fMessenger(&msnger) {;} + + port_id Port() + { return fMessenger->fPort; } + int32 Token() + { return fMessenger->fHandlerToken; } + team_id Team() + { return fMessenger->fTeam; } + bool IsPreferredTarget() + { return fMessenger->fPreferredTarget; } + + private: + BMessenger* fMessenger; +}; + +#endif // MESSENGERPRIVATE_H \ No newline at end of file