Added methods GetEventQueue() and App() (static). Added a sanity event for checking the roster for killed apps.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1517 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
40a1dc4c7f
commit
463322c288
|
@ -9,13 +9,12 @@
|
||||||
|
|
||||||
#include "ClipboardHandler.h"
|
#include "ClipboardHandler.h"
|
||||||
#include "EventQueue.h"
|
#include "EventQueue.h"
|
||||||
|
#include "MessageEvent.h"
|
||||||
#include "MessageRunnerManager.h"
|
#include "MessageRunnerManager.h"
|
||||||
#include "MIMEManager.h"
|
#include "MIMEManager.h"
|
||||||
#include "Registrar.h"
|
#include "Registrar.h"
|
||||||
#include "TRoster.h"
|
#include "TRoster.h"
|
||||||
|
|
||||||
static const char *kEventQueueName = "timer_thread";
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class Registrar
|
\class Registrar
|
||||||
\brief The application class of the registrar.
|
\brief The application class of the registrar.
|
||||||
|
@ -23,6 +22,12 @@ static const char *kEventQueueName = "timer_thread";
|
||||||
Glues the registrar services together and dispatches the roster messages.
|
Glues the registrar services together and dispatches the roster messages.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//! Name of the event queue.
|
||||||
|
static const char *kEventQueueName = "timer_thread";
|
||||||
|
|
||||||
|
//! Time interval between two roster sanity checks (1 s).
|
||||||
|
static const bigtime_t kRosterSanityEventInterval = 1000000LL;
|
||||||
|
|
||||||
// constructor
|
// constructor
|
||||||
/*! \brief Creates the registrar application class.
|
/*! \brief Creates the registrar application class.
|
||||||
*/
|
*/
|
||||||
|
@ -32,7 +37,8 @@ Registrar::Registrar()
|
||||||
fClipboardHandler(NULL),
|
fClipboardHandler(NULL),
|
||||||
fMIMEManager(NULL),
|
fMIMEManager(NULL),
|
||||||
fEventQueue(NULL),
|
fEventQueue(NULL),
|
||||||
fMessageRunnerManager(NULL)
|
fMessageRunnerManager(NULL),
|
||||||
|
fSanityEvent(NULL)
|
||||||
{
|
{
|
||||||
FUNCTION_START();
|
FUNCTION_START();
|
||||||
}
|
}
|
||||||
|
@ -50,11 +56,15 @@ Registrar::~Registrar()
|
||||||
fEventQueue->Die();
|
fEventQueue->Die();
|
||||||
delete fMessageRunnerManager;
|
delete fMessageRunnerManager;
|
||||||
delete fEventQueue;
|
delete fEventQueue;
|
||||||
|
delete fSanityEvent;
|
||||||
fMIMEManager->Lock();
|
fMIMEManager->Lock();
|
||||||
fMIMEManager->Quit();
|
fMIMEManager->Quit();
|
||||||
RemoveHandler(fClipboardHandler);
|
RemoveHandler(fClipboardHandler);
|
||||||
delete fClipboardHandler;
|
delete fClipboardHandler;
|
||||||
delete fRoster;
|
delete fRoster;
|
||||||
|
// Invalidate the global be_roster, so that the BApplication destructor
|
||||||
|
// won't dead-lock when sending a message to itself.
|
||||||
|
BPrivate::init_registrar_roster(BMessenger(), BMessenger());
|
||||||
FUNCTION_END();
|
FUNCTION_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,7 +76,7 @@ Registrar::~Registrar()
|
||||||
void
|
void
|
||||||
Registrar::MessageReceived(BMessage *message)
|
Registrar::MessageReceived(BMessage *message)
|
||||||
{
|
{
|
||||||
FUNCTION_START();
|
// FUNCTION_START();
|
||||||
switch (message->what) {
|
switch (message->what) {
|
||||||
// general requests
|
// general requests
|
||||||
case B_REG_GET_MIME_MESSENGER:
|
case B_REG_GET_MIME_MESSENGER:
|
||||||
|
@ -131,11 +141,17 @@ Registrar::MessageReceived(BMessage *message)
|
||||||
case B_REG_GET_MESSAGE_RUNNER_INFO:
|
case B_REG_GET_MESSAGE_RUNNER_INFO:
|
||||||
fMessageRunnerManager->HandleGetRunnerInfo(message);
|
fMessageRunnerManager->HandleGetRunnerInfo(message);
|
||||||
break;
|
break;
|
||||||
|
// internal messages
|
||||||
|
case B_REG_ROSTER_SANITY_EVENT:
|
||||||
|
fRoster->CheckSanity();
|
||||||
|
fSanityEvent->SetTime(system_time() + kRosterSanityEventInterval);
|
||||||
|
fEventQueue->AddEvent(fSanityEvent);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
BApplication::MessageReceived(message);
|
BApplication::MessageReceived(message);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
FUNCTION_END();
|
// FUNCTION_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadyToRun
|
// ReadyToRun
|
||||||
|
@ -161,6 +177,11 @@ Registrar::ReadyToRun()
|
||||||
// init the global be_roster
|
// init the global be_roster
|
||||||
BPrivate::init_registrar_roster(be_app_messenger,
|
BPrivate::init_registrar_roster(be_app_messenger,
|
||||||
BMessenger(NULL, fMIMEManager));
|
BMessenger(NULL, fMIMEManager));
|
||||||
|
// create and schedule the sanity message event
|
||||||
|
fSanityEvent = new MessageEvent(system_time() + kRosterSanityEventInterval,
|
||||||
|
this, B_REG_ROSTER_SANITY_EVENT);
|
||||||
|
fSanityEvent->SetAutoDelete(false);
|
||||||
|
fEventQueue->AddEvent(fSanityEvent);
|
||||||
FUNCTION_END();
|
FUNCTION_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,6 +197,27 @@ Registrar::QuitRequested()
|
||||||
return BApplication::QuitRequested();
|
return BApplication::QuitRequested();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetEventQueue
|
||||||
|
/*! \brief Returns the registrar's event queue.
|
||||||
|
\return The registrar's event queue.
|
||||||
|
*/
|
||||||
|
EventQueue*
|
||||||
|
Registrar::GetEventQueue() const
|
||||||
|
{
|
||||||
|
return fEventQueue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// App
|
||||||
|
/*! \brief Returns the Registrar application object.
|
||||||
|
\return The Registrar application object.
|
||||||
|
*/
|
||||||
|
Registrar*
|
||||||
|
Registrar::App()
|
||||||
|
{
|
||||||
|
return dynamic_cast<Registrar*>(be_app);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// init_registrar_roster
|
// init_registrar_roster
|
||||||
/*! \brief Initializes the global \a be_roster.
|
/*! \brief Initializes the global \a be_roster.
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
class ClipboardHandler;
|
class ClipboardHandler;
|
||||||
class EventQueue;
|
class EventQueue;
|
||||||
|
class MessageEvent;
|
||||||
class MessageRunnerManager;
|
class MessageRunnerManager;
|
||||||
class MIMEManager;
|
class MIMEManager;
|
||||||
|
|
||||||
|
@ -46,12 +47,17 @@ public:
|
||||||
virtual void ReadyToRun();
|
virtual void ReadyToRun();
|
||||||
virtual bool QuitRequested();
|
virtual bool QuitRequested();
|
||||||
|
|
||||||
|
EventQueue *GetEventQueue() const;
|
||||||
|
|
||||||
|
static Registrar *App();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BPrivate::TRoster *fRoster;
|
BPrivate::TRoster *fRoster;
|
||||||
ClipboardHandler *fClipboardHandler;
|
ClipboardHandler *fClipboardHandler;
|
||||||
MIMEManager *fMIMEManager;
|
MIMEManager *fMIMEManager;
|
||||||
EventQueue *fEventQueue;
|
EventQueue *fEventQueue;
|
||||||
MessageRunnerManager *fMessageRunnerManager;
|
MessageRunnerManager *fMessageRunnerManager;
|
||||||
|
MessageEvent *fSanityEvent;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // REGISTRAR_H
|
#endif // REGISTRAR_H
|
||||||
|
|
Loading…
Reference in New Issue