Make UEFI boot-platform build again
[haiku.git] / headers / os / app / MessageQueue.h
blobb4005b515a9334ee5a7cc7feb0692ff8e10a750a
1 /*
2 * Copyright 2001-2014 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5 #ifndef _MESSAGE_QUEUE_H
6 #define _MESSAGE_QUEUE_H
9 #include <Locker.h>
10 #include <Message.h>
11 // For convenience
14 class BMessageQueue {
15 public:
16 BMessageQueue();
17 virtual ~BMessageQueue();
19 void AddMessage(BMessage* message);
20 void RemoveMessage(BMessage* message);
22 int32 CountMessages() const;
23 bool IsEmpty() const;
25 BMessage* FindMessage(int32 index) const;
26 BMessage* FindMessage(uint32 what, int32 index = 0) const;
28 bool Lock();
29 void Unlock();
30 bool IsLocked() const;
32 BMessage* NextMessage();
33 bool IsNextMessage(const BMessage* message) const;
35 private:
36 // Reserved space in the vtable for future changes to BMessageQueue
37 virtual void _ReservedMessageQueue1();
38 virtual void _ReservedMessageQueue2();
39 virtual void _ReservedMessageQueue3();
41 BMessageQueue(const BMessageQueue &);
42 BMessageQueue& operator=(const BMessageQueue &);
44 bool IsLocked();
45 // this needs to be exported for R5 compatibility and should
46 // be dropped as soon as possible
48 private:
49 BMessage* fHead;
50 BMessage* fTail;
51 int32 fMessageCount;
52 mutable BLocker fLock;
54 uint32 _reserved[3];
58 #endif // _MESSAGE_QUEUE_H