$treeview $search $mathjax $extrastylesheet
00001 #ifndef ARTDAQ_CORE_CORE_SHARED_MEMORY_FRAGMENT_MANAGER_HH 00002 #define ARTDAQ_CORE_CORE_SHARED_MEMORY_FRAGMENT_MANAGER_HH 1 00003 00004 #include "artdaq-core/Core/SharedMemoryManager.hh" 00005 #include "artdaq-core/Data/RawEvent.hh" 00006 00007 namespace artdaq { 00011 class SharedMemoryFragmentManager : public SharedMemoryManager 00012 { 00013 public: 00022 SharedMemoryFragmentManager(uint32_t shm_key, size_t buffer_count = 0, size_t max_buffer_size = 0, size_t buffer_timeout_us = 100 * 1000000); 00023 00027 virtual ~SharedMemoryFragmentManager() = default; 00028 SharedMemoryFragmentManager(SharedMemoryFragmentManager const&) = delete; 00029 SharedMemoryFragmentManager(SharedMemoryFragmentManager&&) = delete; 00030 SharedMemoryFragmentManager& operator=(SharedMemoryFragmentManager const&) = delete; 00031 SharedMemoryFragmentManager& operator=(SharedMemoryFragmentManager&&) = delete; 00032 00040 int WriteFragment(Fragment&& fragment, bool overwrite, size_t timeout_us); 00041 00047 int ReadFragment(Fragment& fragment); 00048 00054 int ReadFragmentHeader(detail::RawFragmentHeader& header); 00055 00062 int ReadFragmentData(RawDataType* destination, size_t words); 00063 00069 bool ReadyForWrite(bool overwrite) override; 00070 00071 private: 00072 int active_buffer_; 00073 }; 00074 } // namespace artdaq 00075 00076 #endif //ARTDAQ_CORE_CORE_SHARED_MEMORY_FRAGMENT_MANAGER_HH