#include <TestUtils.h>
#include <cppunit/TestAssert.h>
#include "SMReplyTarget.h"
#include "SMLooper.h"
SMReplyTarget::SMReplyTarget(bool preferred)
: fHandler(NULL),
fLooper(NULL)
{
fLooper = new SMLooper;
fLooper->Run();
if (!preferred) {
fHandler = new SMHandler;
CHK(fLooper->Lock());
fLooper->AddHandler(fHandler);
fLooper->Unlock();
}
}
SMReplyTarget::~SMReplyTarget()
{
if (fLooper) {
fLooper->Lock();
if (fHandler) {
fLooper->RemoveHandler(fHandler);
delete fHandler;
}
fLooper->Quit();
}
}
BHandler *
SMReplyTarget::Handler()
{
return fHandler;
}
BMessenger
SMReplyTarget::Messenger()
{
return BMessenger(fHandler, fLooper);
}
bool
SMReplyTarget::ReplySuccess()
{
return fLooper->ReplySuccess();
}