Added method Init(), which adds the registrar to the roster.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@517 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2002-07-28 19:37:24 +00:00
parent b98a89a763
commit 5e949b7dfc
2 changed files with 40 additions and 0 deletions

View File

@ -28,6 +28,7 @@
#include <new.h> #include <new.h>
#include <Application.h> #include <Application.h>
#include <AppMisc.h>
#include "Debug.h" #include "Debug.h"
#include "RegistrarDefs.h" #include "RegistrarDefs.h"
@ -585,6 +586,43 @@ TRoster::HandleActivateApp(BMessage *request)
FUNCTION_END(); FUNCTION_END();
} }
// Init
/*! \brief Initializes the roster.
Currently only adds the registrar to the roster.
The application must already be running, more precisly Run() must have
been called.
\return
- \c B_OK: Everything went fine.
- an error code
*/
status_t
TRoster::Init()
{
status_t error = B_OK;
// create the info
RosterAppInfo *info = new(nothrow) RosterAppInfo;
if (!info)
error = B_NO_MEMORY;
// get the app's ref
entry_ref ref;
if (error == B_OK)
error = get_app_ref(&ref);
// init and add the info
if (error == B_OK) {
info->Init(be_app->Thread(), be_app->Team(), be_app_messenger.fPort,
B_EXCLUSIVE_LAUNCH, &ref, kRegistrarSignature);
info->state = APP_STATE_REGISTERED;
info->registration_time = system_time();
error = AddApp(info);
}
// cleanup on error
if (error != B_OK && info)
delete info;
return error;
}
// AddApp // AddApp
/*! \brief Add the supplied app info to the list of (pre-)registered apps. /*! \brief Add the supplied app info to the list of (pre-)registered apps.

View File

@ -62,6 +62,8 @@ public:
void HandleGetAppList(BMessage *request); void HandleGetAppList(BMessage *request);
void HandleActivateApp(BMessage *request); void HandleActivateApp(BMessage *request);
status_t Init();
status_t AddApp(RosterAppInfo *info); status_t AddApp(RosterAppInfo *info);
void RemoveApp(RosterAppInfo *info); void RemoveApp(RosterAppInfo *info);
void ActivateApp(RosterAppInfo *info); void ActivateApp(RosterAppInfo *info);