$treeview $search $mathjax $extrastylesheet
artdaq_core
v3_06_01
$projectbrief
|
$projectbrief
|
$searchbox |
00001 #ifndef artdaq_core_Core_SharedMemoryEventReceiver_hh 00002 #define artdaq_core_Core_SharedMemoryEventReceiver_hh 1 00003 00004 #include <set> 00005 00006 #include "artdaq-core/Core/SharedMemoryManager.hh" 00007 #include "artdaq-core/Data/Fragment.hh" 00008 #include "artdaq-core/Data/RawEvent.hh" 00009 00010 namespace artdaq { 00014 class SharedMemoryEventReceiver 00015 { 00016 public: 00022 SharedMemoryEventReceiver(uint32_t shm_key, uint32_t broadcast_shm_key); 00026 virtual ~SharedMemoryEventReceiver() = default; 00027 00034 bool ReadyForRead(bool broadcast = false, size_t timeout_us = 1000000); 00035 00041 detail::RawEventHeader* ReadHeader(bool& err); 00042 00048 std::set<Fragment::type_t> GetFragmentTypes(bool& err); 00049 00056 std::unique_ptr<Fragments> GetFragmentsByType(bool& err, Fragment::type_t type); 00057 00062 std::string toString(); 00063 00067 void ReleaseBuffer(); 00068 00073 int GetRank() { return data_.GetRank(); } 00074 00079 int GetMyId() { return data_.GetMyId(); } 00080 00085 bool IsEndOfData() { return data_.IsEndOfData(); } 00086 00091 int ReadReadyCount() { return data_.ReadReadyCount() + broadcasts_.ReadReadyCount(); } 00092 00097 size_t size() { return data_.size(); } 00098 00099 private: 00100 SharedMemoryEventReceiver(SharedMemoryEventReceiver const&) = delete; 00101 SharedMemoryEventReceiver(SharedMemoryEventReceiver&&) = delete; 00102 SharedMemoryEventReceiver& operator=(SharedMemoryEventReceiver const&) = delete; 00103 SharedMemoryEventReceiver& operator=(SharedMemoryEventReceiver&&) = delete; 00104 00105 std::string printBuffers_(SharedMemoryManager* data_source); 00106 00107 int current_read_buffer_; 00108 bool initialized_; 00109 detail::RawEventHeader* current_header_; 00110 SharedMemoryManager* current_data_source_; 00111 SharedMemoryManager data_; 00112 SharedMemoryManager broadcasts_; 00113 }; 00114 } // namespace artdaq 00115 00116 #endif /* artdaq_core_Core_SharedMemoryEventReceiver_hh */