Jpp
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
ptrDispatcher::close
void close()
Definition: ptr_dispatcher.hh:39
FrameFarm::stop
void stop()
Definition: frame_farm.hh:72
ptrDispatcher
Definition: ptr_dispatcher.hh:12
FrameFarm::runNumber
int runNumber() const
Definition: frame_farm.hh:87
FrameFarm::m_frames
ptrDispatcher m_frames
Definition: frame_farm.hh:31
FrameFarm::container_t
std::map< frame_idx_t, PuzzledFrame * > container_t
Definition: frame_farm.hh:25
FrameFarm::getTimeSliceDuration
unsigned int getTimeSliceDuration()
Definition: frame_farm.hh:78
FrameFarm::FrameFarm
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
FrameFarm::m_dumpfile
DumpFile m_dumpfile
Definition: frame_farm.hh:50
FrameFarm::m_container
container_t m_container
Definition: frame_farm.hh:29
puzzled_frame.hh
FrameFarm::m_start_run_ms
uint64_t m_start_run_ms
Definition: frame_farm.hh:43
FrameFarm::m_mutex
boost::mutex m_mutex
Definition: frame_farm.hh:35
Frame
Template Frame for ARS data.
Definition: frame.hh:12
FrameFarm::runNumber
int runNumber(int rn)
Definition: frame_farm.hh:92
FrameFarm::m_timeslice_duration
unsigned int m_timeslice_duration
Definition: frame_farm.hh:41
FrameFarm::m_ebf_mutex
boost::mutex m_ebf_mutex
Definition: frame_farm.hh:37
FilenameGenerator
Definition: dump_file.hh:12
FrameFarm::m_run_number
int m_run_number
Definition: frame_farm.hh:47
dump_file.hh
clb_common_header.hh
FrameFarm::insert
bool insert(CLBDataGram *datagram)
Definition: frame_farm.cc:98
FrameFarm::getFrame
void getFrame(Frame &frame)
Definition: frame_farm.cc:34
std::map< frame_idx_t, PuzzledFrame * >
FrameFarm::buffers_collector_t
std::deque< PuzzledFrame * > buffers_collector_t
Definition: frame_farm.hh:27
FrameFarm::m_max_dump_size
std::size_t m_max_dump_size
Definition: frame_farm.hh:45
FrameFarm::operator()
void operator()()
Definition: frame_farm.cc:55
CLBDataGram
Definition: clb_datagram.hh:15
clb_datagram.hh
ptr_dispatcher.hh
FrameFarm::detectorId
unsigned int detectorId(unsigned int detector_id)
Definition: frame_farm.hh:97
FrameFarm
Definition: frame_farm.hh:23
FrameFarm::m_empty_buffers
buffers_collector_t m_empty_buffers
Definition: frame_farm.hh:33
FrameFarm::m_detector_id
unsigned int m_detector_id
Definition: frame_farm.hh:48
FrameFarm::getEmptyPuzzledFrame
PuzzledFrame * getEmptyPuzzledFrame()
Definition: frame_farm.cc:189
FrameFarm::m_running
boost::atomic< bool > m_running
Definition: frame_farm.hh:39
FrameFarm::~FrameFarm
~FrameFarm()
Definition: frame_farm.cc:15
DumpFile
Definition: dqdumpfile.hh:65
PuzzledFrame
Definition: puzzled_frame.hh:18