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:
+3
-19
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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) )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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 ------------------------------*/
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -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
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user