1// SMReplyTarget.cpp
2
3#include <TestUtils.h>
4#include <cppunit/TestAssert.h>
5
6#include "SMReplyTarget.h"
7#include "SMLooper.h"
8
9// constructor
10SMReplyTarget::SMReplyTarget(bool preferred)
11			 : fHandler(NULL),
12			   fLooper(NULL)
13{
14	// create looper and handler
15	fLooper = new SMLooper;
16	fLooper->Run();
17	if (!preferred) {
18		fHandler = new SMHandler;
19		CHK(fLooper->Lock());
20		fLooper->AddHandler(fHandler);
21		fLooper->Unlock();
22	}
23}
24
25// destructor
26SMReplyTarget::~SMReplyTarget()
27{
28	if (fLooper) {
29		fLooper->Lock();
30		if (fHandler) {
31			fLooper->RemoveHandler(fHandler);
32			delete fHandler;
33		}
34		fLooper->Quit();
35	}
36}
37
38// Handler
39BHandler *
40SMReplyTarget::Handler()
41{
42	return fHandler;
43}
44
45// Messenger
46BMessenger
47SMReplyTarget::Messenger()
48{
49	return BMessenger(fHandler, fLooper);
50}
51
52// ReplySuccess
53bool
54SMReplyTarget::ReplySuccess()
55{
56	return fLooper->ReplySuccess();
57}
58
59
60