Initial
This commit is contained in:
71
thread/MSGQUEUE.HPP
Normal file
71
thread/MSGQUEUE.HPP
Normal file
@@ -0,0 +1,71 @@
|
||||
#ifndef _THREAD_MESSAGEQUEUE_HPP_
|
||||
#define _THREAD_MESSAGEQUEUE_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_BLOCK_HPP_
|
||||
#include <common/block.hpp>
|
||||
#endif
|
||||
#ifndef _THREAD_EVENT_HPP_
|
||||
#include <thread/event.hpp>
|
||||
#endif
|
||||
#ifndef _THREAD_MUTEX_HPP_
|
||||
#include <thread/mutex.hpp>
|
||||
#endif
|
||||
#ifndef _THREAD_THREADMESSAGE_HPP_
|
||||
#include <thread/thmsg.hpp>
|
||||
#endif
|
||||
|
||||
class MessageQueue
|
||||
{
|
||||
public:
|
||||
enum QueueStatus{QueueLocked,QueueOpen};
|
||||
MessageQueue(void);
|
||||
virtual ~MessageQueue();
|
||||
WORD postMessage(ThreadMessage &someThreadMessage);
|
||||
WORD peekMessage(ThreadMessage &someThreadMessage);
|
||||
WORD waitMessage(ThreadMessage &someThreadMessage);
|
||||
WORD itemsInQueue(void);
|
||||
void shutdownQueue(void);
|
||||
void restartQueue(void);
|
||||
void isAlertable(WORD isAlertable);
|
||||
private:
|
||||
WORD putQueueMessage(ThreadMessage &someThreadMessage);
|
||||
WORD peekQueueMessage(ThreadMessage &someThreadMessage);
|
||||
WORD getQueueMessage(ThreadMessage &someThreadMessage);
|
||||
WORD isQueueEmpty(void)const;
|
||||
WORD isQueueLocked(void)const;
|
||||
|
||||
WORD mIsAlertable;
|
||||
Event mNamedEvent;
|
||||
Mutex mMutexSemaphore;
|
||||
QueueStatus mQueueStatus;
|
||||
Block<ThreadMessage> mMessageQueueHigh;
|
||||
Block<ThreadMessage> mMessageQueueNormal;
|
||||
Block<ThreadMessage> mMessageQueueLow;
|
||||
};
|
||||
|
||||
inline
|
||||
MessageQueue::MessageQueue(void)
|
||||
: mNamedEvent("MESSAGEQUEUENAMEDEVENT"), mMutexSemaphore("MESSAGEQUEUENAMEDMUTEX"),
|
||||
mQueueStatus(QueueOpen), mIsAlertable(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
MessageQueue::~MessageQueue()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
WORD MessageQueue::isQueueLocked(void)const
|
||||
{
|
||||
return QueueLocked==mQueueStatus;
|
||||
}
|
||||
|
||||
inline
|
||||
void MessageQueue::isAlertable(WORD isAlertable)
|
||||
{
|
||||
mIsAlertable=isAlertable;
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user