Jpp - the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
frame_farm.hh
Go to the documentation of this file.
1 #ifndef DATAQUEUE_FRAMEFACTORY_FRAME_FARM_HH
2 #define DATAQUEUE_FRAMEFACTORY_FRAME_FARM_HH
3 
4 #include <boost/atomic.hpp>
5 #include <boost/thread/mutex.hpp>
6 
7 #include <map>
8 #include <deque>
9 
10 #include "puzzled_frame.hh"
11 #include "ptr_dispatcher.hh"
12 #include "dump_file.hh"
13 
14 #include <stdint.h>
16 
17 #include <Buffers/clb_datagram.hh>
18 
19 /**
20  * \author cpellegrino
21  */
22 
23 class FrameFarm
24 {
26 
27  typedef std::deque<PuzzledFrame*> buffers_collector_t;
28 
30 
32 
34 
35  boost::mutex m_mutex;
36 
37  boost::mutex m_ebf_mutex;
38 
39  boost::atomic<bool> m_running;
40 
41  unsigned int m_timeslice_duration;
42 
43  uint64_t m_start_run_ms;
44 
45  std::size_t m_max_dump_size;
46 
48  unsigned int m_detector_id;
49 
51 
52  public:
53 
54  FrameFarm(unsigned int DeltaTS,
55  uint64_t run_start_time,
56  std::size_t max_dump_size,
57  const std::string& dump_prefix,
58  const std::string& dump_postfix)
59  :
60  m_timeslice_duration(DeltaTS),
61  m_start_run_ms(run_start_time * 1000),
62  m_max_dump_size(max_dump_size),
63  m_run_number(0),
64  m_detector_id(0),
65  m_dumpfile(FilenameGenerator(dump_prefix, dump_postfix), m_max_dump_size)
66  {}
67 
68  ~FrameFarm();
69 
70  void operator ()();
71 
72  void stop()
73  {
74  m_running = false;
75  m_frames.close();
76  }
77 
78  unsigned int getTimeSliceDuration()
79  {
80  return m_timeslice_duration;
81  }
82 
83  bool insert(CLBDataGram* datagram);
84 
85  void getFrame(Frame& frame);
86 
87  int runNumber() const
88  {
89  return m_run_number;
90  }
91 
92  int runNumber(int rn)
93  {
94  return m_run_number = rn;
95  }
96 
97  unsigned int detectorId(unsigned int detector_id)
98  {
99  return m_detector_id = detector_id;
100  }
101 
102  private:
103 
105 };
106 
107 #endif // DATAQUEUE_FRAMEFACTORY_FRAME_FARM_HH
int runNumber() const
Definition: frame_farm.hh:87
unsigned int detectorId(unsigned int detector_id)
Definition: frame_farm.hh:97
std::map< frame_idx_t, PuzzledFrame * > container_t
Definition: frame_farm.hh:25
FrameFarm(unsigned int DeltaTS, uint64_t run_start_time, std::size_t max_dump_size, const std::string &dump_prefix, const std::string &dump_postfix)
Definition: frame_farm.hh:54
void operator()()
Definition: frame_farm.cc:57
PuzzledFrame * getEmptyPuzzledFrame()
Definition: frame_farm.cc:200
void stop()
Definition: frame_farm.hh:72
boost::mutex m_mutex
Definition: frame_farm.hh:35
DumpFile m_dumpfile
Definition: frame_farm.hh:50
buffers_collector_t m_empty_buffers
Definition: frame_farm.hh:33
std::size_t m_max_dump_size
Definition: frame_farm.hh:45
bool insert(CLBDataGram *datagram)
Definition: frame_farm.cc:100
unsigned int m_timeslice_duration
Definition: frame_farm.hh:41
std::deque< PuzzledFrame * > buffers_collector_t
Definition: frame_farm.hh:27
ptrDispatcher m_frames
Definition: frame_farm.hh:31
container_t m_container
Definition: frame_farm.hh:29
boost::atomic< bool > m_running
Definition: frame_farm.hh:39
boost::mutex m_ebf_mutex
Definition: frame_farm.hh:37
void getFrame(Frame &frame)
Definition: frame_farm.cc:36
unsigned int m_detector_id
Definition: frame_farm.hh:48
Template Frame for ARS data.
Definition: frame.hh:12
unsigned int getTimeSliceDuration()
Definition: frame_farm.hh:78
int runNumber(int rn)
Definition: frame_farm.hh:92
uint64_t m_start_run_ms
Definition: frame_farm.hh:43
int m_run_number
Definition: frame_farm.hh:47