Cleaned up BRoster's friends mess. All access to private BRoster functionality is now done through the newly added BRoster::Private class, which is BRoster's only friend (poor BRoster ;-).

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2664 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2003-02-08 23:29:21 +00:00
parent 1c18696ba4
commit 2ed834e3f6
13 changed files with 246 additions and 172 deletions
+3 -19
View File
@@ -39,17 +39,6 @@ class BList;
class BMessage; class BMessage;
class BNodeInfo; class BNodeInfo;
// TODO: relocate these private prototypes
extern "C" int _init_roster_();
extern "C" int _delete_roster_();
status_t _send_to_roster_(BMessage *message, BMessage *reply, bool mime);
bool _is_valid_roster_mess_(bool mime);
namespace BPrivate {
void init_registrar_roster(BMessenger mainMessenger,
BMessenger mimeMessenger);
}
/*-------------------------------------------------------------*/ /*-------------------------------------------------------------*/
/* --------- app_info Struct and Values ------------------------ */ /* --------- app_info Struct and Values ------------------------ */
@@ -149,15 +138,10 @@ public:
const char *appSig = NULL) const; const char *appSig = NULL) const;
/*----- Private or reserved ------------------------------*/ /*----- Private or reserved ------------------------------*/
class Private;
private: private:
friend class BApplication; friend class Private;
friend class BWindow;
friend class _BAppCleanup_;
friend int _init_roster_();
friend status_t _send_to_roster_(BMessage *, BMessage *, bool);
friend bool _is_valid_roster_mess_(bool);
friend void BPrivate::init_registrar_roster(BMessenger, BMessenger);
friend class GetRecentTester;
class ArgVector; class ArgVector;
+73
View File
@@ -0,0 +1,73 @@
//----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//---------------------------------------------------------------------
#ifndef _ROSTER_PRIVATE_H
#define _ROSTER_PRIVATE_H
#include <Messenger.h>
#include <Roster.h>
class BRoster::Private {
public:
Private() : fRoster(const_cast<BRoster*>(be_roster)) {}
Private(BRoster &roster) : fRoster(&roster) {}
Private(BRoster *roster) : fRoster(roster) {}
void SetTo(BMessenger mainMessenger, BMessenger mimeMessenger);
status_t SendTo(BMessage *message, BMessage *reply, bool mime);
bool IsMessengerValid(bool mime) const;
// needed by BApplication
status_t AddApplication(const char *mimeSig, const entry_ref *ref,
uint32 flags, team_id team, thread_id thread,
port_id port, bool fullReg, uint32 *token,
team_id *otherTeam) const
{ return fRoster->AddApplication(mimeSig, ref, flags, team, thread,
port, fullReg, token, otherTeam); }
status_t SetSignature(team_id team, const char *mimeSig) const
{ return fRoster->SetSignature(team, mimeSig); }
status_t CompleteRegistration(team_id team, thread_id thread,
port_id port) const
{ return fRoster->CompleteRegistration(team, thread, port); }
bool IsAppPreRegistered(const entry_ref *ref, team_id team,
app_info *info) const
{ return fRoster->IsAppPreRegistered(ref, team, info); }
status_t RemoveApp(team_id team) const
{ return fRoster->RemoveApp(team); }
// needed by GetRecentTester
void AddToRecentApps(const char *appSig) const
{ fRoster->AddToRecentApps(appSig); }
void ClearRecentDocuments() const
{ fRoster->ClearRecentDocuments(); }
void ClearRecentFolders() const
{ fRoster->ClearRecentFolders(); }
void ClearRecentApps() const
{ fRoster->ClearRecentApps(); }
void LoadRecentLists(const char *file) const
{ fRoster->LoadRecentLists(file); }
void SaveRecentLists(const char *file) const
{ fRoster->SaveRecentLists(file); }
private:
BRoster *fRoster;
};
extern "C" int _init_roster_();
extern "C" int _delete_roster_();
#endif // _ROSTER_PRIVATE_H
+13 -9
View File
@@ -44,6 +44,7 @@
#include <PropertyInfo.h> #include <PropertyInfo.h>
#include <RegistrarDefs.h> #include <RegistrarDefs.h>
#include <Roster.h> #include <Roster.h>
#include <RosterPrivate.h>
#include <Window.h> #include <Window.h>
// Project Includes ------------------------------------------------------------ // Project Includes ------------------------------------------------------------
@@ -216,7 +217,7 @@ BApplication::BApplication(const char* signature, status_t* error)
BApplication::~BApplication() BApplication::~BApplication()
{ {
// unregister from the roster // unregister from the roster
be_roster->RemoveApp(Team()); BRoster::Private().RemoveApp(Team());
// uninitialize be_app and be_app_messenger // uninitialize be_app and be_app_messenger
be_app = NULL; be_app = NULL;
// R5 doesn't uninitialize be_app_messenger. // R5 doesn't uninitialize be_app_messenger.
@@ -659,15 +660,18 @@ void BApplication::InitData(const char* signature, status_t* error)
} }
} }
// check whether be_roster is valid // check whether be_roster is valid
if (fInitError == B_OK && !isRegistrar && !_is_valid_roster_mess_(false)) { if (fInitError == B_OK && !isRegistrar
&& !BRoster::Private().IsMessengerValid(false)) {
printf("FATAL: be_roster is not valid. Is the registrar running?\n"); printf("FATAL: be_roster is not valid. Is the registrar running?\n");
fInitError = B_NO_INIT; fInitError = B_NO_INIT;
} }
// check whether or not we are pre-registered // check whether or not we are pre-registered
bool preRegistered = false; bool preRegistered = false;
app_info appInfo; app_info appInfo;
if (fInitError == B_OK && !isRegistrar) if (fInitError == B_OK && !isRegistrar) {
preRegistered = be_roster->IsAppPreRegistered(&ref, team, &appInfo); preRegistered = BRoster::Private().IsAppPreRegistered(&ref, team,
&appInfo);
}
if (preRegistered) { if (preRegistered) {
// we are pre-registered => the app info has been filled in // we are pre-registered => the app info has been filled in
// Check whether we need to replace the looper port with a port // Check whether we need to replace the looper port with a port
@@ -679,17 +683,17 @@ void BApplication::InitData(const char* signature, status_t* error)
appInfo.port = fMsgPort; appInfo.port = fMsgPort;
// check the signature and correct it, if necessary // check the signature and correct it, if necessary
if (strcmp(appInfo.signature, fAppName)) if (strcmp(appInfo.signature, fAppName))
be_roster->SetSignature(team, fAppName); BRoster::Private().SetSignature(team, fAppName);
// complete the registration // complete the registration
fInitError = be_roster->CompleteRegistration(team, thread, fInitError = BRoster::Private().CompleteRegistration(team, thread,
appInfo.port); appInfo.port);
} else if (fInitError == B_OK) { } else if (fInitError == B_OK) {
// not pre-registered -- try to register the application // not pre-registered -- try to register the application
team_id otherTeam = -1; team_id otherTeam = -1;
// the registrar must not register // the registrar must not register
if (!isRegistrar) { if (!isRegistrar) {
fInitError = be_roster->AddApplication(signature, &ref, appFlags, fInitError = BRoster::Private().AddApplication(signature, &ref,
team, thread, fMsgPort, true, NULL, &otherTeam); appFlags, team, thread, fMsgPort, true, NULL, &otherTeam);
} }
if (fInitError == B_ALREADY_RUNNING) { if (fInitError == B_ALREADY_RUNNING) {
// An instance is already running and we asked for // An instance is already running and we asked for
+3 -2
View File
@@ -32,8 +32,9 @@
// System Includes ------------------------------------------------------------- // System Includes -------------------------------------------------------------
#include <Clipboard.h> #include <Clipboard.h>
#include <RegistrarDefs.h>
#include <Application.h> #include <Application.h>
#include <RegistrarDefs.h>
#include <RosterPrivate.h>
// Project Includes ------------------------------------------------------------ // Project Includes ------------------------------------------------------------
@@ -56,7 +57,7 @@ BClipboard::BClipboard(const char *name, bool transient = false)
fSystemCount = 0; fSystemCount = 0;
BMessage message(B_REG_GET_CLIPBOARD_MESSENGER), reply; BMessage message(B_REG_GET_CLIPBOARD_MESSENGER), reply;
if ( (_send_to_roster_(&message, &reply, false) == B_OK) && if ( (BRoster::Private().SendTo(&message, &reply, false) == B_OK) &&
(reply.what == B_REG_SUCCESS) && (reply.what == B_REG_SUCCESS) &&
(reply.FindMessenger("messenger",&fClipHandler) == B_OK) ) (reply.FindMessenger("messenger",&fClipHandler) == B_OK) )
{ {
+1 -1
View File
@@ -25,7 +25,7 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
#include <stdio.h> #include <stdio.h>
#include <Roster.h> #include <RosterPrivate.h>
// debugging // debugging
//#define DBG(x) x //#define DBG(x) x
+5 -4
View File
@@ -29,6 +29,7 @@
#include <MessageRunner.h> #include <MessageRunner.h>
#include <RegistrarDefs.h> #include <RegistrarDefs.h>
#include <Roster.h> #include <Roster.h>
#include <RosterPrivate.h>
// constructor // constructor
/*! \brief Creates and initializes a new BMessageRunner. /*! \brief Creates and initializes a new BMessageRunner.
@@ -98,7 +99,7 @@ BMessageRunner::~BMessageRunner()
// send the request // send the request
BMessage reply; BMessage reply;
if (error == B_OK) if (error == B_OK)
error = _send_to_roster_(&request, &reply, false); error = BRoster::Private().SendTo(&request, &reply, false);
// ignore the reply, we can't do anything anyway // ignore the reply, we can't do anything anyway
} }
@@ -176,7 +177,7 @@ BMessageRunner::GetInfo(bigtime_t *interval, int32 *count) const
// send the request // send the request
BMessage reply; BMessage reply;
if (error == B_OK) if (error == B_OK)
error = _send_to_roster_(&request, &reply, false); error = BRoster::Private().SendTo(&request, &reply, false);
// evaluate the reply // evaluate the reply
if (error == B_OK) { if (error == B_OK) {
if (reply.what == B_REG_SUCCESS) { if (reply.what == B_REG_SUCCESS) {
@@ -267,7 +268,7 @@ BMessageRunner::InitData(BMessenger target, const BMessage *message,
// send the request // send the request
BMessage reply; BMessage reply;
if (error == B_OK) if (error == B_OK)
error = _send_to_roster_(&request, &reply, false); error = BRoster::Private().SendTo(&request, &reply, false);
// evaluate the reply // evaluate the reply
if (error == B_OK) { if (error == B_OK) {
if (reply.what == B_REG_SUCCESS) { if (reply.what == B_REG_SUCCESS) {
@@ -319,7 +320,7 @@ BMessageRunner::SetParams(bool resetInterval, bigtime_t interval,
// send the request // send the request
BMessage reply; BMessage reply;
if (error == B_OK) if (error == B_OK)
error = _send_to_roster_(&request, &reply, false); error = BRoster::Private().SendTo(&request, &reply, false);
// evaluate the reply // evaluate the reply
if (error == B_OK) { if (error == B_OK) {
if (reply.what != B_REG_SUCCESS) if (reply.what != B_REG_SUCCESS)
+1 -86
View File
@@ -48,6 +48,7 @@
#include <Query.h> #include <Query.h>
#include <RegistrarDefs.h> #include <RegistrarDefs.h>
#include <Roster.h> #include <Roster.h>
#include <RosterPrivate.h>
#include <Volume.h> #include <Volume.h>
// debugging // debugging
@@ -2304,92 +2305,6 @@ BRoster::SaveRecentLists(const char *filename) const
const BRoster *be_roster; const BRoster *be_roster;
/*-----------------------------------------------------*/
/*----- Private functions -----------------------------*/
// _init_roster_
/*! \brief Initializes the global be_roster variable.
Called before the global constructors are invoked.
\return Unknown!
\todo Investigate what the return value means.
*/
int
_init_roster_()
{
be_roster = new BRoster;
return 0;
}
// _delete_roster_
/*! \brief Deletes the global be_roster.
Called after the global destructors are invoked.
\return Unknown!
\todo Investigate what the return value means.
*/
int
_delete_roster_()
{
delete be_roster;
return 0;
}
// _send_to_roster_
/*! \brief Sends a message to the registrar.
\a mime specifies whether to send the message to the roster or to the
MIME data base service.
If \a reply is not \c NULL, the function waits for a reply.
\param message The message to be sent.
\param reply A pointer to a pre-allocated BMessage into which the reply
message will be copied.
\param mime \c true, if the message should be sent to the MIME data base
service, \c false for the roster.
\return
- \c B_OK: Everything went fine.
- \c B_BAD_VALUE: \c NULL \a message.
- \c B_NO_INIT: be_roster is \c NULL.
- another error code
*/
status_t
_send_to_roster_(BMessage *message, BMessage *reply, bool mime)
{
status_t error = (message ? B_OK : B_BAD_VALUE);
if (error == B_OK && !be_roster)
error = B_NO_INIT;
if (error == B_OK) {
if (mime)
error = be_roster->fMimeMess.SendMessage(message, reply);
else
error = be_roster->fMess.SendMessage(message, reply);
}
return error;
}
// _is_valid_roster_mess_
/*! \brief Returns whether the global be_roster's messengers are valid.
\a mime specifies whether to check the roster messenger or the one of
the MIME data base service.
\param mime \c true, if the MIME data base service messenger should be
checked, \c false for the roster messenger.
\return \true, if the selected messenger is valid, \c false otherwise.
*/
bool
_is_valid_roster_mess_(bool mime)
{
return (be_roster && (mime ? be_roster->fMimeMess.IsValid()
: be_roster->fMess.IsValid()));
}
/*-----------------------------------------------------*/ /*-----------------------------------------------------*/
/*----- Helper functions ------------------------------*/ /*----- Helper functions ------------------------------*/
+112
View File
@@ -0,0 +1,112 @@
//----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//---------------------------------------------------------------------
#include <RosterPrivate.h>
#include <Roster.h>
/*! \class BRoster::Private
\brief Class used to access private BRoster members.
This way, the only friend BRoster needs is this class.
*/
// SetTo
/*! \brief Initializes the roster.
\param mainMessenger A BMessenger targeting the registrar application.
\param mimeMessenger A BMessenger targeting the MIME manager.
*/
void
BRoster::Private::SetTo(BMessenger mainMessenger, BMessenger mimeMessenger)
{
if (fRoster) {
fRoster->fMess = mainMessenger;
fRoster->fMimeMess = mimeMessenger;
}
}
// SendTo
/*! \brief Sends a message to the registrar.
\a mime specifies whether to send the message to the roster or to the
MIME data base service.
If \a reply is not \c NULL, the function waits for a reply.
\param message The message to be sent.
\param reply A pointer to a pre-allocated BMessage into which the reply
message will be copied.
\param mime \c true, if the message should be sent to the MIME data base
service, \c false for the roster.
\return
- \c B_OK: Everything went fine.
- \c B_BAD_VALUE: \c NULL \a message.
- \c B_NO_INIT: the roster is \c NULL.
- another error code
*/
status_t
BRoster::Private::SendTo(BMessage *message, BMessage *reply, bool mime)
{
status_t error = (message ? B_OK : B_BAD_VALUE);
if (error == B_OK && !fRoster)
error = B_NO_INIT;
if (error == B_OK) {
if (mime)
error = fRoster->fMimeMess.SendMessage(message, reply);
else
error = fRoster->fMess.SendMessage(message, reply);
}
return error;
}
// IsMessengerValid
/*! \brief Returns whether the roster's messengers are valid.
\a mime specifies whether to check the roster messenger or the one of
the MIME data base service.
\param mime \c true, if the MIME data base service messenger should be
checked, \c false for the roster messenger.
\return \true, if the selected messenger is valid, \c false otherwise.
*/
bool
BRoster::Private::IsMessengerValid(bool mime) const
{
return (fRoster && (mime ? fRoster->fMimeMess.IsValid()
: fRoster->fMess.IsValid()));
}
// _init_roster_
/*! \brief Initializes the global be_roster variable.
Called before the global constructors are invoked.
\return Unknown!
\todo Investigate what the return value means.
*/
int
_init_roster_()
{
be_roster = new BRoster;
return 0;
}
// _delete_roster_
/*! \brief Deletes the global be_roster.
Called after the global destructors are invoked.
\return Unknown!
\todo Investigate what the return value means.
*/
int
_delete_roster_()
{
delete be_roster;
return 0;
}
+1
View File
@@ -18,5 +18,6 @@ APP_KIT_SOURCE =
RegistrarThread.cpp RegistrarThread.cpp
RegistrarThreadManager.cpp RegistrarThreadManager.cpp
Roster.cpp Roster.cpp
RosterPrivate.cpp
TokenSpace.cpp TokenSpace.cpp
; ;
+2 -1
View File
@@ -18,6 +18,7 @@
#include <Node.h> #include <Node.h>
#include <RegistrarDefs.h> #include <RegistrarDefs.h>
#include <Roster.h> #include <Roster.h>
#include <RosterPrivate.h>
#include <unistd.h> #include <unistd.h>
@@ -51,7 +52,7 @@ status_t do_mime_update(int32 what, const char *path, int recursive,
if (!err) if (!err)
err = msg.AddBool("force", force); err = msg.AddBool("force", force);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_VALUE; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_VALUE;
if (!err) if (!err)
+21 -21
View File
@@ -18,7 +18,7 @@
#include <stdio.h> // For printf() #include <stdio.h> // For printf()
#include <string.h> // For strncpy() #include <string.h> // For strncpy()
#include <RegistrarDefs.h> #include <RegistrarDefs.h>
#include <Roster.h> // For _send_to_roster_() #include <RosterPrivate.h> // For SendTo()
// Private helper functions // Private helper functions
bool isValidMimeChar(const char ch); bool isValidMimeChar(const char ch);
@@ -320,7 +320,7 @@ BMimeType::Install()
if (!err) if (!err)
err = msg.AddString("type", Type()); err = msg.AddString("type", Type());
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -356,7 +356,7 @@ BMimeType::Delete()
if (!err) if (!err)
err = msg.AddString("type", Type()); err = msg.AddString("type", Type());
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -629,7 +629,7 @@ BMimeType::GetSupportingApps(BMessage *signatures) const
if (!err) if (!err)
err = msg.AddString("type", Type()); err = msg.AddString("type", Type());
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -703,7 +703,7 @@ BMimeType::SetPreferredApp(const char *signature, app_verb verb)
if (!err) if (!err)
err = msg.AddInt32("app verb", verb); err = msg.AddInt32("app verb", verb);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -779,7 +779,7 @@ BMimeType::SetAttrInfo(const BMessage *info)
if (!err && info) if (!err && info)
err = msg.AddMessage("attr info", info); err = msg.AddMessage("attr info", info);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -836,7 +836,7 @@ BMimeType::SetFileExtensions(const BMessage *extensions)
if (!err && extensions) if (!err && extensions)
err = msg.AddMessage("extensions", extensions); err = msg.AddMessage("extensions", extensions);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -878,7 +878,7 @@ BMimeType::SetShortDescription(const char *description)
if (!err) if (!err)
err = msg.AddBool("long", false); err = msg.AddBool("long", false);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -920,7 +920,7 @@ BMimeType::SetLongDescription(const char *description)
if (!err) if (!err)
err = msg.AddBool("long", true); err = msg.AddBool("long", true);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -956,7 +956,7 @@ BMimeType::GetInstalledSupertypes(BMessage *supertypes)
if (!err) if (!err)
msg.what = B_REG_MIME_GET_INSTALLED_SUPERTYPES; msg.what = B_REG_MIME_GET_INSTALLED_SUPERTYPES;
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -1015,7 +1015,7 @@ BMimeType::GetInstalledTypes(const char *supertype, BMessage *types)
if (!err && supertype) if (!err && supertype)
err = msg.AddString("supertype", supertype); err = msg.AddString("supertype", supertype);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -1163,7 +1163,7 @@ BMimeType::SetAppHint(const entry_ref *ref)
if (!err && ref) if (!err && ref)
err = msg.AddRef("app hint", ref); err = msg.AddRef("app hint", ref);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -1279,7 +1279,7 @@ BMimeType::SetIconForType(const char *type, const BBitmap *icon, icon_size which
err = msg.AddString("file type", type); err = msg.AddString("file type", type);
} }
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -1345,7 +1345,7 @@ BMimeType::SetSnifferRule(const char *rule)
if (!err && rule) if (!err && rule)
err = msg.AddString("sniffer rule", rule); err = msg.AddString("sniffer rule", rule);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -1474,7 +1474,7 @@ BMimeType::GuessMimeType(const entry_ref *file, BMimeType *type)
if (!err) if (!err)
err = msg.AddRef("file ref", file); err = msg.AddRef("file ref", file);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -1512,7 +1512,7 @@ BMimeType::GuessMimeType(const void *buffer, int32 length, BMimeType *type)
if (!err) if (!err)
err = msg.AddData("data", B_RAW_TYPE, buffer, length); err = msg.AddData("data", B_RAW_TYPE, buffer, length);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -1553,7 +1553,7 @@ BMimeType::GuessMimeType(const char *filename, BMimeType *type)
if (!err) if (!err)
err = msg.AddString("filename", filename); err = msg.AddString("filename", filename);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -1587,7 +1587,7 @@ BMimeType::StartWatching(BMessenger target)
// Build and send the message, read the reply // Build and send the message, read the reply
err = msg.AddMessenger("target", target); err = msg.AddMessenger("target", target);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -1616,7 +1616,7 @@ BMimeType::StopWatching(BMessenger target)
// Build and send the message, read the reply // Build and send the message, read the reply
err = msg.AddMessenger("target", target); err = msg.AddMessenger("target", target);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -1796,7 +1796,7 @@ BMimeType::SetSupportedTypes(const BMessage *types, bool fullSync)
if (!err) if (!err)
err = msg.AddBool("full sync", fullSync); err = msg.AddBool("full sync", fullSync);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
@@ -1834,7 +1834,7 @@ BMimeType::GetAssociatedTypes(const char *extension, BMessage *types)
if (!err) if (!err)
err = msg.AddString("extension", extension); err = msg.AddString("extension", extension);
if (!err) if (!err)
err = _send_to_roster_(&msg, &reply, true); err = BRoster::Private().SendTo(&msg, &reply, true);
if (!err) if (!err)
err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY; err = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (!err) if (!err)
+3 -22
View File
@@ -6,6 +6,7 @@
#include <Message.h> #include <Message.h>
#include <OS.h> #include <OS.h>
#include <RegistrarDefs.h> #include <RegistrarDefs.h>
#include <RosterPrivate.h>
#include "ClipboardHandler.h" #include "ClipboardHandler.h"
#include "DiskDeviceManager.h" #include "DiskDeviceManager.h"
@@ -68,7 +69,7 @@ Registrar::~Registrar()
delete fRoster; delete fRoster;
// Invalidate the global be_roster, so that the BApplication destructor // Invalidate the global be_roster, so that the BApplication destructor
// won't dead-lock when sending a message to itself. // won't dead-lock when sending a message to itself.
BPrivate::init_registrar_roster(BMessenger(), BMessenger()); BRoster::Private().SetTo(BMessenger(), BMessenger());
FUNCTION_END(); FUNCTION_END();
} }
@@ -233,8 +234,7 @@ Registrar::ReadyToRun()
fEventQueue = new EventQueue(kEventQueueName); fEventQueue = new EventQueue(kEventQueueName);
fMessageRunnerManager = new MessageRunnerManager(fEventQueue); fMessageRunnerManager = new MessageRunnerManager(fEventQueue);
// init the global be_roster // init the global be_roster
BPrivate::init_registrar_roster(be_app_messenger, BRoster::Private().SetTo(be_app_messenger, BMessenger(NULL, fMIMEManager));
BMessenger(NULL, fMIMEManager));
// create and schedule the sanity message event // create and schedule the sanity message event
fSanityEvent = new MessageEvent(system_time() + kRosterSanityEventInterval, fSanityEvent = new MessageEvent(system_time() + kRosterSanityEventInterval,
this, B_REG_ROSTER_SANITY_EVENT); this, B_REG_ROSTER_SANITY_EVENT);
@@ -276,25 +276,6 @@ Registrar::App()
} }
// init_registrar_roster
/*! \brief Initializes the global \a be_roster.
While this is done automagically for all other applications while libbe
initialization, the registrar needs to help out a bit.
\param mainMessenger A BMessenger targeting the registrar application.
\param mimeMessenger A BMessenger targeting the MIME manager.
*/
void
BPrivate::init_registrar_roster(BMessenger mainMessenger,
BMessenger mimeMessenger)
{
BRoster *roster = const_cast<BRoster*>(be_roster);
roster->fMess = mainMessenger;
roster->fMimeMess = mimeMessenger;
}
// main // main
/*! \brief Creates and runs the registrar application. /*! \brief Creates and runs the registrar application.
@@ -14,6 +14,7 @@
#include <Message.h> #include <Message.h>
#include <Node.h> #include <Node.h>
#include <Roster.h> #include <Roster.h>
#include <RosterPrivate.h>
// Project Includes ------------------------------------------------------------ // Project Includes ------------------------------------------------------------
#include <TestShell.h> #include <TestShell.h>
@@ -1270,8 +1271,8 @@ GetRecentTester::RecentListsLoadSaveClearTest()
roster.AddToRecentDocuments(&doc2, test_sigs[1]); roster.AddToRecentDocuments(&doc2, test_sigs[1]);
roster.AddToRecentFolders(&folder1, test_sigs[0]); roster.AddToRecentFolders(&folder1, test_sigs[0]);
roster.AddToRecentFolders(&folder2, test_sigs[1]); roster.AddToRecentFolders(&folder2, test_sigs[1]);
roster.AddToRecentApps(appSig1); BRoster::Private(roster).AddToRecentApps(appSig1);
roster.AddToRecentApps(appSig2); BRoster::Private(roster).AddToRecentApps(appSig2);
// Check #1 // Check #1
NextSubTest(); NextSubTest();
@@ -1300,10 +1301,10 @@ GetRecentTester::RecentListsLoadSaveClearTest()
// Save to disk and clear // Save to disk and clear
NextSubTest(); NextSubTest();
roster.SaveRecentLists(kTempSaveFile); BRoster::Private(roster).SaveRecentLists(kTempSaveFile);
roster.ClearRecentDocuments(); BRoster::Private(roster).ClearRecentDocuments();
roster.ClearRecentFolders(); BRoster::Private(roster).ClearRecentFolders();
roster.ClearRecentApps(); BRoster::Private(roster).ClearRecentApps();
// Check #2 // Check #2
NextSubTest(); NextSubTest();
@@ -1323,7 +1324,7 @@ GetRecentTester::RecentListsLoadSaveClearTest()
// Load back from disk // Load back from disk
NextSubTest(); NextSubTest();
roster.LoadRecentLists(kTempSaveFile); BRoster::Private(roster).LoadRecentLists(kTempSaveFile);
// Check #3 // Check #3
NextSubTest(); NextSubTest();