Dynalib Utils
DynaWaitQueue.h
Go to the documentation of this file.
1 #ifndef DYNAWAITQUEUE_H
2 #define DYNAWAITQUEUE_H
3 
4 #include <semaphore.h>
5 #include "BitManip.h"
6 #include "CheckForError.h"
7 #include "Exception.h"
8 #include <atomic>
9 
10 template <class T> class DynaWaitQueue {
11 protected:
12  bool _rethrow = false;
13  atomic<bool> _shutdown = false;
14  atomic<bool> _complete = true;
15  sem_t _full;
16  sem_t _empty;
17  sem_t _mutex;
18  atomic<int> _maxSize = NO_MAX_SIZE;
19  DynaList<T>* _queueList = nullptr;
20 
21 public:
22  static int NO_MAX_SIZE;
23 
24  explicit DynaWaitQueue(int maxSize);
25  virtual ~DynaWaitQueue();
26 
27  bool add(T* obj, long msecs);
28  T* next(long msecs);
29 };
30 
31 #endif
Definition: DynaWaitQueue.h:10
atomic< int > _maxSize
Definition: DynaWaitQueue.h:18
sem_t _full
Definition: DynaWaitQueue.h:15
atomic< bool > _complete
Definition: DynaWaitQueue.h:14
sem_t _mutex
Definition: DynaWaitQueue.h:17
atomic< bool > _shutdown
Definition: DynaWaitQueue.h:13
DynaWaitQueue(int maxSize)
Definition: DynaWaitQueueImpl.h:17
static int NO_MAX_SIZE
Definition: DynaWaitQueue.h:22
Definition: DynaList.h:38
bool _rethrow
Definition: DynaWaitQueue.h:12
virtual ~DynaWaitQueue()
sem_t _empty
Definition: DynaWaitQueue.h:16
DynaList< T > * _queueList
Definition: DynaWaitQueue.h:19
bool add(T *obj, long msecs)
Definition: DynaWaitQueueImpl.h:24
T * next(long msecs)
Definition: DynaWaitQueueImpl.h:33