40 lines
829 B
C
40 lines
829 B
C
|
//----------------------------------------------------------------------
|
||
|
// This software is part of the OpenBeOS distribution and is covered
|
||
|
// by the OpenBeOS license.
|
||
|
//---------------------------------------------------------------------
|
||
|
|
||
|
#ifndef PRIORITY_MESSAGE_QUEUE_H
|
||
|
#define PRIORITY_MESSAGE_QUEUE_H
|
||
|
|
||
|
#include <Locker.h>
|
||
|
#include <ObjectList.h>
|
||
|
|
||
|
class BMessage;
|
||
|
|
||
|
class PriorityMessageQueue {
|
||
|
public:
|
||
|
PriorityMessageQueue();
|
||
|
~PriorityMessageQueue();
|
||
|
|
||
|
bool Lock();
|
||
|
void Unlock();
|
||
|
|
||
|
bool PushMessage(BMessage *message, int32 priority = 0);
|
||
|
BMessage *PopMessage();
|
||
|
|
||
|
int32 CountMessages() const;
|
||
|
bool IsEmpty() const;
|
||
|
|
||
|
private:
|
||
|
int32 _FindInsertionIndex(int32 priority);
|
||
|
|
||
|
private:
|
||
|
class MessageInfo;
|
||
|
|
||
|
private:
|
||
|
mutable BLocker fLock;
|
||
|
BObjectList<MessageInfo> fMessages;
|
||
|
};
|
||
|
|
||
|
#endif // PRIORITY_MESSAGE_QUEUE_H
|