root/src/tests/kits/app/bmessenger/ForwardMessageTest.cpp
#include <stdio.h>
#include <Application.h>
#include <Looper.h>

class MyLooper :  public BLooper
{
public:
        MyLooper(BLooper *looper) : BLooper("test") {
                printf("Looper created\n");
                fLooper = looper;
        };

        virtual void MessageReceived(BMessage *msg) {
        printf("MessageReceived : %.4s\n", (char*)&msg->what);
        switch (msg->what) {
        case 'toto':
                if (fLooper) {
                        BMessenger(fLooper).SendMessage(msg);
                        break;
                }
                msg->SendReply('couc');
                break;
        default:
                BLooper::MessageReceived(msg);
        }
        };

        BLooper *fLooper;
};

class App : public BApplication
{
public:
        App() : BApplication("application/test") { 
                
        };
        virtual void ReadyToRun() {
                MyLooper looper2(NULL);
                looper2.Run();
                MyLooper looper1(&looper2);
                looper1.Run();
                printf("loopers run\n");
                BMessage reply;
                BMessenger(&looper1).SendMessage('toto', &reply);
                printf("message sent and replied\ncheck there is only a 'couc' what in  the reply\n");
                reply.PrintToStream();
                exit(0);
        };

};

int main()
{
        App().Run();
}