00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _NPT_SELECTABLE_MESSAGE_QUEUE_H_
00011 #define _NPT_SELECTABLE_MESSAGE_QUEUE_H_
00012
00013
00014
00015
00016 #include "NptMessaging.h"
00017 #include "NptSimpleMessageQueue.h"
00018
00019
00020
00021
00022 class NPT_SelectableMessageQueue : public NPT_SimpleMessageQueue
00023 {
00024 public:
00025
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
00035 void FlushEvent();
00036
00037
00038 int m_Pipe[2];
00039 };
00040
00041
00042 #endif