artdaq_core  v3_04_02
SharedMemoryFragmentManager.hh
1 #ifndef ARTDAQ_CORE_CORE_SHARED_MEMORY_FRAGMENT_MANAGER_HH
2 #define ARTDAQ_CORE_CORE_SHARED_MEMORY_FRAGMENT_MANAGER_HH 1
3 
4 #include "artdaq-core/Core/SharedMemoryManager.hh"
5 #include "artdaq-core/Data/RawEvent.hh"
6 
7 namespace artdaq {
12  {
13  public:
22  SharedMemoryFragmentManager(uint32_t shm_key, size_t buffer_count, size_t max_buffer_size, size_t buffer_timeout_us = 100 * 1000000);
23 
27  virtual ~SharedMemoryFragmentManager() =default;
28 
36  int WriteFragment(Fragment&& fragment, bool overwrite, size_t timeout_us);
37 
43  int ReadFragment(Fragment& fragment);
44 
51 
58  int ReadFragmentData(RawDataType* destination, size_t words);
59 
65  bool ReadyForWrite(bool overwrite) override;
66 
67  private:
68  int active_buffer_;
69  };
70 }
71 
72 #endif //ARTDAQ_CORE_CORE_SHARED_MEMORY_FRAGMENT_MANAGER_HH
The SharedMemoryFragmentManager is a SharedMemoryManager that deals with Fragment transfers using a S...
The RawFragmentHeader class contains the basic fields used by artdaq for routing Fragment objects thr...
SharedMemoryFragmentManager(uint32_t shm_key, size_t buffer_count, size_t max_buffer_size, size_t buffer_timeout_us=100 *1000000)
SharedMemoryFragmentManager Constructor.
The SharedMemoryManager creates a Shared Memory area which is divided into a number of fixed-size buf...
int WriteFragment(Fragment &&fragment, bool overwrite, size_t timeout_us)
Write a Fragment to the Shared Memory.
detail::RawFragmentHeader::RawDataType RawDataType
The RawDataType (currently a 64-bit integer) is the basic unit of data representation within artdaq ...
Definition: Fragment.hh:39
int ReadFragmentHeader(detail::RawFragmentHeader &header)
Read a Fragment Header from the Shared Memory.
int ReadFragment(Fragment &fragment)
Read a Fragment from the Shared Memory.
bool ReadyForWrite(bool overwrite) override
Check if a buffer is ready for writing, and if so, reserves it for use.
A Fragment contains the data from one piece of the DAQ system for one event The artdaq::Fragment is t...
Definition: Fragment.hh:84
virtual ~SharedMemoryFragmentManager()=default
SharedMemoryFragmentManager destructor.
int ReadFragmentData(RawDataType *destination, size_t words)
Read Fragment Data from the Shared Memory.