BMessenger has no friends besides Private anymore.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11023 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2005-01-25 14:46:28 +00:00
parent 4afc60d31b
commit 4b8aafea9f
4 changed files with 46 additions and 29 deletions

View File

@ -14,6 +14,7 @@
#include <Entry.h> #include <Entry.h>
#include <Message.h> #include <Message.h>
#include <Messenger.h> #include <Messenger.h>
#include <MessengerPrivate.h>
#include <SupportDefs.h> #include <SupportDefs.h>
// Project Includes ------------------------------------------------------------ // Project Includes ------------------------------------------------------------
@ -62,10 +63,11 @@ inline
void void
_set_message_reply_(BMessage *message, BMessenger messenger) _set_message_reply_(BMessage *message, BMessenger messenger)
{ {
message->fReplyTo.port = messenger.fPort; BMessenger::Private messengerPrivate(messenger);
message->fReplyTo.target = messenger.fHandlerToken; message->fReplyTo.port = messengerPrivate.Port();
message->fReplyTo.team = messenger.fTeam; message->fReplyTo.target = messengerPrivate.Token();
message->fReplyTo.preferred = messenger.fPreferredTarget; message->fReplyTo.team = messengerPrivate.Team();
message->fReplyTo.preferred = messengerPrivate.IsPreferredTarget();
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
inline int32 _get_message_target_(BMessage *msg) inline int32 _get_message_target_(BMessage *msg)

View File

@ -45,6 +45,7 @@
#include <Errors.h> #include <Errors.h>
#include <Message.h> #include <Message.h>
#include <Messenger.h> #include <Messenger.h>
#include <MessengerPrivate.h>
#include <String.h> #include <String.h>
//#include <CRTDBG.H> //#include <CRTDBG.H>
@ -329,8 +330,10 @@ BMessenger BMessage::ReturnAddress() const
{ {
if (WasDelivered()) if (WasDelivered())
{ {
return BMessenger(fReplyTo.team, fReplyTo.port, fReplyTo.target, BMessenger messenger;
fReplyTo.preferred); BMessenger::Private(messenger).SetTo(fReplyTo.team, fReplyTo.port,
fReplyTo.target, fReplyTo.preferred);
return messenger;
} }
return BMessenger(); return BMessenger();
@ -457,8 +460,10 @@ status_t BMessage::SendReply(BMessage* the_reply, BMessenger reply_to,
bigtime_t timeout) bigtime_t timeout)
{ {
// TODO: test // TODO: test
BMessenger messenger(fReplyTo.team, fReplyTo.port, BMessenger messenger;
fReplyTo.target,
BMessenger::Private messengerPrivate(messenger);
messengerPrivate.SetTo(fReplyTo.team, fReplyTo.port, fReplyTo.target,
fReplyTo.preferred); fReplyTo.preferred);
if (fReplyRequired) if (fReplyRequired)
{ {
@ -472,9 +477,9 @@ status_t BMessage::SendReply(BMessage* the_reply, BMessenger reply_to,
the_reply->fIsReply = false; the_reply->fIsReply = false;
if (err) if (err)
{ {
if (set_port_owner(messenger.fPort, messenger.fTeam) == B_BAD_TEAM_ID) if (set_port_owner(messengerPrivate.Port(),
{ messengerPrivate.Team()) == B_BAD_TEAM_ID) {
delete_port(messenger.fPort); delete_port(messengerPrivate.Port());
} }
} }
return err; return err;
@ -526,8 +531,9 @@ status_t BMessage::SendReply(BMessage* the_reply, BMessage* reply_to_reply,
bigtime_t send_timeout, bigtime_t reply_timeout) bigtime_t send_timeout, bigtime_t reply_timeout)
{ {
// TODO: test // TODO: test
BMessenger messenger(fReplyTo.team, fReplyTo.port, BMessenger messenger;
fReplyTo.target, BMessenger::Private messengerPrivate(messenger);
messengerPrivate.SetTo(fReplyTo.team, fReplyTo.port, fReplyTo.target,
fReplyTo.preferred); fReplyTo.preferred);
if (fReplyRequired) if (fReplyRequired)
{ {
@ -542,9 +548,9 @@ status_t BMessage::SendReply(BMessage* the_reply, BMessage* reply_to_reply,
the_reply->fIsReply = false; the_reply->fIsReply = false;
if (err) if (err)
{ {
if (set_port_owner(messenger.fPort, messenger.fTeam) == B_BAD_TEAM_ID) if (set_port_owner(messengerPrivate.Port(),
{ messengerPrivate.Team()) == B_BAD_TEAM_ID) {
delete_port(messenger.fPort); delete_port(messengerPrivate.Port());
} }
} }
return err; return err;
@ -1792,14 +1798,15 @@ PRINT(("BMessage::_send_(port: %ld, token: %ld, preferred: %d): "
tmp_msg.fReplyTo = fReplyTo; tmp_msg.fReplyTo = fReplyTo;
BMessage* self = const_cast<BMessage*>(this); BMessage* self = const_cast<BMessage*>(this);
BMessenger::Private replyToPrivate(reply_to);
self->fPreferred = preferred; self->fPreferred = preferred;
self->fTarget = token; self->fTarget = token;
self->fReplyRequired = reply_required; self->fReplyRequired = reply_required;
self->fReplyTo.team = reply_to.fTeam; self->fReplyTo.team = replyToPrivate.Team();
self->fReplyTo.port = reply_to.fPort; self->fReplyTo.port = replyToPrivate.Port();
self->fReplyTo.target = (reply_to.fPreferredTarget self->fReplyTo.target = (replyToPrivate.IsPreferredTarget()
? B_PREFERRED_TOKEN : reply_to.fHandlerToken); ? B_PREFERRED_TOKEN : replyToPrivate.Token());
self->fReplyTo.preferred = reply_to.fPreferredTarget; self->fReplyTo.preferred = replyToPrivate.IsPreferredTarget();
char tmp[0x800]; char tmp[0x800];
ssize_t size; ssize_t size;
@ -1863,7 +1870,9 @@ status_t BMessage::send_message(port_id port, team_id port_owner, int32 token,
goto error; goto error;
{ {
BMessenger messenger(team, reply_port, B_PREFERRED_TOKEN, false); BMessenger messenger;
BMessenger::Private(messenger).SetTo(team, reply_port,
B_PREFERRED_TOKEN, false);
err = _send_(port, token, preferred, send_timeout, true, messenger); err = _send_(port, token, preferred, send_timeout, true, messenger);
} }
if (err) if (err)

View File

@ -41,6 +41,7 @@
#include <fs_info.h> #include <fs_info.h>
#include <image.h> #include <image.h>
#include <List.h> #include <List.h>
#include <MessengerPrivate.h>
#include <Mime.h> #include <Mime.h>
#include <Node.h> #include <Node.h>
#include <NodeInfo.h> #include <NodeInfo.h>
@ -2145,7 +2146,8 @@ BRoster::send_to_running(team_id team, int argc, const char *const *args,
app_info info; app_info info;
error = GetRunningAppInfo(team, &info); error = GetRunningAppInfo(team, &info);
if (error == B_OK) { if (error == B_OK) {
BMessenger messenger(team, info.port, 0, true); BMessenger messenger;
BMessenger::Private(messenger).SetTo(team, info.port, 0, true);
// send messages from the list // send messages from the list
if (messageList) { if (messageList) {
for (int32 i = 0; for (int32 i = 0;
@ -2186,7 +2188,7 @@ DBG(OUT("BRoster::InitMessengers()\n"));
if (rosterPort >= 0 && get_port_info(rosterPort, &info) == B_OK) { if (rosterPort >= 0 && get_port_info(rosterPort, &info) == B_OK) {
DBG(OUT(" found roster port\n")); DBG(OUT(" found roster port\n"));
// ask for the MIME messenger // ask for the MIME messenger
fMess = BMessenger(info.team, rosterPort, 0, true); BMessenger::Private(fMess).SetTo(info.team, rosterPort, 0, true);
BMessage reply; BMessage reply;
status_t error = fMess.SendMessage(B_REG_GET_MIME_MESSENGER, &reply); status_t error = fMess.SendMessage(B_REG_GET_MIME_MESSENGER, &reply);
if (error == B_OK && reply.what == B_REG_SUCCESS) { if (error == B_OK && reply.what == B_REG_SUCCESS) {

View File

@ -6,6 +6,7 @@
#include <ByteOrder.h> #include <ByteOrder.h>
#include <Messenger.h> #include <Messenger.h>
#include <MessengerPrivate.h>
status_t status_t
@ -108,10 +109,13 @@ swap_data(type_code type, void *_data, size_t length, swap_action action)
BMessenger *end = (BMessenger *)((addr_t)_data + length); BMessenger *end = (BMessenger *)((addr_t)_data + length);
while (messenger < end) { while (messenger < end) {
BMessenger::Private messengerPrivate(messenger);
// ToDo: if the additional fields change, this function has to be updated! // ToDo: if the additional fields change, this function has to be updated!
messenger->fPort = __swap_int32(messenger->fPort); messengerPrivate.SetTo(
messenger->fHandlerToken = __swap_int32(messenger->fHandlerToken); __swap_int32(messengerPrivate.Team()),
messenger->fTeam = __swap_int32(messenger->fTeam); __swap_int32(messengerPrivate.Port()),
__swap_int32(messengerPrivate.Token()),
messengerPrivate.IsPreferredTarget());
messenger++; messenger++;
} }
break; break;