GRUTinizer
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RawDataQueue.h
Go to the documentation of this file.
1 #ifndef _TDATAQUEUE_H_
2 #define _TDATAQUEUE_H_
3 
4 #include <condition_variable>
5 #include <mutex>
6 #include <queue>
7 
8 #include "TRawEvent.h"
9 #include "TStopwatch.h"
10 
11 class RawDataQueue {
12 public:
13  RawDataQueue();
14  virtual ~RawDataQueue();
15 
16  TRawEvent Pop();
17  void Push(TRawEvent obj);
18  size_t Size();
19 
20  void Print();
21  void Status();
22 
23 private:
24  std::mutex mutex;
25  std::queue<TRawEvent> queue;
26  std::condition_variable can_push;
27  std::condition_variable can_pop;
28 
31  size_t items_pushed;
32  size_t items_popped;
33 
35  size_t bytes_pushed;
36  size_t bytes_popped;
37 
38  static int num_opened;
39  static int num_closed;
40 
41  TStopwatch clock;
42 };
43 
44 #endif /* _TDATAQUEUE_H_ */