#ifndef SM_INVOKER_H
#define SM_INVOKER_H
#include <Messenger.h>
class SMInvoker {
public:
SMInvoker();
virtual ~SMInvoker();
virtual status_t Invoke(BMessenger &target, BHandler *replyHandler,
BMessenger &replyMessenger) = 0;
bool ReplySuccess();
bool DirectReply();
protected:
BMessage *fReplyMessage;
};
class SMInvoker1 : public SMInvoker {
public:
SMInvoker1(bool useReplyTo);
virtual status_t Invoke(BMessenger &target, BHandler *replyHandler,
BMessenger &replyMessenger);
private:
bool fUseReplyTo;
};
class SMInvoker2 : public SMInvoker {
public:
SMInvoker2(bool useMessage, bool useReplyTo, bigtime_t timeout);
virtual status_t Invoke(BMessenger &target, BHandler *replyHandler,
BMessenger &replyMessenger);
private:
bool fUseMessage;
bool fUseReplyTo;
bigtime_t fTimeout;
};
class SMInvoker3 : public SMInvoker {
public:
SMInvoker3(bool useMessage, bool useReplyTo, bigtime_t timeout);
virtual status_t Invoke(BMessenger &target, BHandler *replyHandler,
BMessenger &replyMessenger);
private:
bool fUseMessage;
bool fUseReplyTo;
bigtime_t fTimeout;
};
class SMInvoker4 : public SMInvoker {
public:
SMInvoker4(bool useReply);
virtual status_t Invoke(BMessenger &target, BHandler *replyHandler,
BMessenger &replyMessenger);
private:
bool fUseReply;
};
class SMInvoker5 : public SMInvoker {
public:
SMInvoker5(bool useMessage, bool useReply, bigtime_t deliveryTimeout,
bigtime_t replyTimeout);
virtual status_t Invoke(BMessenger &target, BHandler *replyHandler,
BMessenger &replyMessenger);
private:
bool fUseMessage;
bool fUseReply;
bigtime_t fDeliveryTimeout;
bigtime_t fReplyTimeout;
};
#endif