The SharedMemoryFragmentManager is a SharedMemoryManager that deals with Fragment transfers using a SharedMemoryManager. More...
#include <artdaq-core/Core/SharedMemoryFragmentManager.hh>
Public Member Functions | |
SharedMemoryFragmentManager (uint32_t shm_key, size_t buffer_count, size_t max_buffer_size, size_t buffer_timeout_us=100 *1000000) | |
SharedMemoryFragmentManager Constructor. | |
virtual | ~SharedMemoryFragmentManager () |
SharedMemoryFragmentManager destructor. | |
int | WriteFragment (Fragment &&fragment, bool overwrite, size_t timeout_us) |
Write a Fragment to the Shared Memory. | |
int | ReadFragment (Fragment &fragment) |
Read a Fragment from the Shared Memory. | |
int | ReadFragmentHeader (detail::RawFragmentHeader &header) |
Read a Fragment Header from the Shared Memory. | |
int | ReadFragmentData (RawDataType *destination, size_t words) |
Read Fragment Data from the Shared Memory. | |
bool | ReadyForWrite (bool overwrite) override |
Check if a buffer is ready for writing, and if so, reserves it for use. |
The SharedMemoryFragmentManager is a SharedMemoryManager that deals with Fragment transfers using a SharedMemoryManager.
Definition at line 11 of file SharedMemoryFragmentManager.hh.
artdaq::SharedMemoryFragmentManager::SharedMemoryFragmentManager | ( | uint32_t | shm_key, | |
size_t | buffer_count, | |||
size_t | max_buffer_size, | |||
size_t | buffer_timeout_us = 100 * 1000000 | |||
) |
SharedMemoryFragmentManager Constructor.
shm_key | The key to use when attaching/creating the shared memory segment | |
buffer_count | The number of buffers in the shared memory | |
max_buffer_size | The size of each buffer | |
buffer_timeout_us | The maximum amount of time a buffer may be locked before being returned to its previous state. This timer is reset upon any operation by the owning SharedMemoryManager. |
Definition at line 7 of file SharedMemoryFragmentManager.cc.
int artdaq::SharedMemoryFragmentManager::ReadFragment | ( | Fragment & | fragment | ) |
Read a Fragment from the Shared Memory.
fragment | Output Fragment object |
Definition at line 67 of file SharedMemoryFragmentManager.cc.
int artdaq::SharedMemoryFragmentManager::ReadFragmentData | ( | RawDataType * | destination, | |
size_t | words | |||
) |
Read Fragment Data from the Shared Memory.
destination | Destination for data | |
words | RawDataType Word count to read |
Definition at line 101 of file SharedMemoryFragmentManager.cc.
int artdaq::SharedMemoryFragmentManager::ReadFragmentHeader | ( | detail::RawFragmentHeader & | header | ) |
Read a Fragment Header from the Shared Memory.
header | Output Fragment Header |
Definition at line 81 of file SharedMemoryFragmentManager.cc.
bool artdaq::SharedMemoryFragmentManager::ReadyForWrite | ( | bool | overwrite | ) | [override, virtual] |
Check if a buffer is ready for writing, and if so, reserves it for use.
overwrite | Whether to overwrite Full buffers (non-reliable mode) |
Reimplemented from artdaq::SharedMemoryManager.
Definition at line 14 of file SharedMemoryFragmentManager.cc.
int artdaq::SharedMemoryFragmentManager::WriteFragment | ( | Fragment && | fragment, | |
bool | overwrite, | |||
size_t | timeout_us | |||
) |
Write a Fragment to the Shared Memory.
fragment | Fragment to write | |
overwrite | Whether to set the overwrite flag | |
timeout_us | Time to wait for shared memory to be free (0: No timeout) (Timeout does not apply if overwrite == false) |
Definition at line 23 of file SharedMemoryFragmentManager.cc.