1#include <stdio.h>
2#include <Application.h>
3#include <Looper.h>
4
5class MyLooper :  public BLooper
6{
7public:
8	MyLooper(BLooper *looper) : BLooper("test") {
9		printf("Looper created\n");
10		fLooper = looper;
11	};
12
13	virtual void MessageReceived(BMessage *msg) {
14	printf("MessageReceived : %.4s\n", (char*)&msg->what);
15	switch (msg->what) {
16	case 'toto':
17		if (fLooper) {
18			BMessenger(fLooper).SendMessage(msg);
19			break;
20		}
21		msg->SendReply('couc');
22		break;
23	default:
24		BLooper::MessageReceived(msg);
25	}
26	};
27
28	BLooper *fLooper;
29};
30
31class App : public BApplication
32{
33public:
34	App() : BApplication("application/test") {
35
36	};
37	virtual void ReadyToRun() {
38		MyLooper looper2(NULL);
39		looper2.Run();
40		MyLooper looper1(&looper2);
41		looper1.Run();
42		printf("loopers run\n");
43		BMessage reply;
44		BMessenger(&looper1).SendMessage('toto', &reply);
45		printf("message sent and replied\ncheck there is only a 'couc' what in  the reply\n");
46		reply.PrintToStream();
47		exit(0);
48	};
49
50};
51
52int main()
53{
54	App().Run();
55}
56