NptSelectableMessageQueue.h

00001 /*****************************************************************
00002 |
00003 |   Neptune - Selectable Message Queue
00004 |
00005 |   (c) 2001-2006 Gilles Boccon-Gibod
00006 |   Author: Gilles Boccon-Gibod (bok@bok.net)
00007 |
00008  ****************************************************************/
00009 
00010 #ifndef _NPT_SELECTABLE_MESSAGE_QUEUE_H_
00011 #define _NPT_SELECTABLE_MESSAGE_QUEUE_H_
00012 
00013 /*----------------------------------------------------------------------
00014 |   includes
00015 +---------------------------------------------------------------------*/
00016 #include "NptMessaging.h"
00017 #include "NptSimpleMessageQueue.h"
00018 
00019 /*----------------------------------------------------------------------
00020 |   NPT_SelectableMessageQueue
00021 +---------------------------------------------------------------------*/
00022 class NPT_SelectableMessageQueue : public NPT_SimpleMessageQueue
00023 {
00024 public:
00025     // methods
00026              NPT_SelectableMessageQueue();
00027     virtual ~NPT_SelectableMessageQueue();
00028     virtual NPT_Result QueueMessage(NPT_Message*        message,
00029                                     NPT_MessageHandler* handler);
00030     virtual NPT_Result PumpMessage(bool blocking = true);
00031     int  GetEventFd() { return m_Pipe[0]; }
00032  
00033 private:
00034     // methods
00035     void FlushEvent();
00036 
00037     // members
00038     int m_Pipe[2];
00039 };
00040 
00041 
00042 #endif /* _NPT_SELECTABLE_MESSAGE_QUEUE_H_ */