2005-06-28 01:04:34 +02:00
|
|
|
#ifndef MESSAGEPASSER_H__
|
|
|
|
#define MESSAGEPASSER_H__
|
|
|
|
|
2005-06-25 04:21:26 +02:00
|
|
|
namespace AtlasMessage
|
|
|
|
{
|
|
|
|
|
2005-10-31 04:36:50 +01:00
|
|
|
struct IMessage;
|
|
|
|
struct QueryMessage;
|
|
|
|
|
|
|
|
class MessagePasser
|
2005-06-25 04:21:26 +02:00
|
|
|
{
|
|
|
|
public:
|
2005-11-03 04:49:57 +01:00
|
|
|
virtual void Add(IMessage*)=0;
|
|
|
|
// takes ownership of IMessage object
|
|
|
|
|
2005-10-31 04:36:50 +01:00
|
|
|
virtual IMessage* Retrieve()=0;
|
2005-11-03 04:49:57 +01:00
|
|
|
|
|
|
|
virtual void Query(QueryMessage*, void(*timeoutCallback)())=0;
|
|
|
|
// blocks; caller retains ownership of QueryMessage object
|
2005-06-25 04:21:26 +02:00
|
|
|
};
|
|
|
|
|
2005-10-31 04:36:50 +01:00
|
|
|
extern MessagePasser* g_MessagePasser;
|
2005-06-28 01:04:34 +02:00
|
|
|
|
2005-10-31 04:36:50 +01:00
|
|
|
#define POST_MESSAGE(type) AtlasMessage::g_MessagePasser->Add(new AtlasMessage::m##type)
|
2005-06-25 04:21:26 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2005-06-28 01:04:34 +02:00
|
|
|
#endif // MESSAGEPASSER_H__
|