$treeview $search $mathjax $extrastylesheet
artdaq
v3_04_01
$projectbrief
|
$projectbrief
|
$searchbox |
A TransferInterface implementation plugin that transfers data using Shared Memory. More...
#include <artdaq/TransferPlugins/ShmemTransfer.hh>
Public Member Functions | |
ShmemTransfer (fhicl::ParameterSet const &pset, Role role) | |
ShmemTransfer Constructor. | |
virtual | ~ShmemTransfer () noexcept |
ShmemTransfer Destructor. | |
int | receiveFragment (Fragment &fragment, size_t receiveTimeout) override |
Receive a Fragment from Shared Memory. | |
int | receiveFragmentHeader (detail::RawFragmentHeader &header, size_t receiveTimeout) override |
Receive a Fragment Header from the transport mechanism. | |
int | receiveFragmentData (RawDataType *destination, size_t wordCount) override |
Receive the body of a Fragment to the given destination pointer. | |
CopyStatus | transfer_fragment_min_blocking_mode (Fragment const &fragment, size_t send_timeout_usec) override |
Transfer a Fragment to the destination. May not necessarily be reliable, but will not block longer than send_timeout_usec. | |
CopyStatus | transfer_fragment_reliable_mode (Fragment &&fragment) override |
Transfer a Fragment to the destination. This should be reliable, if the underlying transport mechanism supports reliable sending. | |
bool | isRunning () override |
Determine whether the TransferInterface plugin is able to send/receive data. | |
void | flush_buffers () override |
Flush any in-flight data. This should be used by the receiver after the receive loop has ended. |
A TransferInterface implementation plugin that transfers data using Shared Memory.
Definition at line 14 of file ShmemTransfer.hh.
artdaq::ShmemTransfer::ShmemTransfer | ( | fhicl::ParameterSet const & | pset, | |
Role | role | |||
) |
ShmemTransfer Constructor.
pset | ParameterSet used to configure ShmemTransfer | |
role | Role of this ShmemTransfer instance (kSend or kReceive) |
* ShmemTransfer accepts the following Parameters: * "shm_key_offset" (Default: 0): Offset to add to shared memory key (hash of uniqueLabel) *
ShmemTransfer also requires all Parameters for configuring a TransferInterface Additionally, an offset can be added via the ARTDAQ_SHMEM_TRANSFER_OFFSET envrionment variable. Note that this variable, if used, MUST have the same value for all artdaq processes communicating via ShmemTransfer.
Definition at line 8 of file Shmem_transfer.cc.
bool artdaq::ShmemTransfer::isRunning | ( | ) | [override, virtual] |
Determine whether the TransferInterface plugin is able to send/receive data.
Reimplemented from artdaq::TransferInterface.
Definition at line 234 of file Shmem_transfer.cc.
int artdaq::ShmemTransfer::receiveFragment | ( | Fragment & | fragment, | |
size_t | receiveTimeout | |||
) | [override] |
Receive a Fragment from Shared Memory.
[out] | fragment | Received Fragment |
receiveTimeout | Timeout for receive, in microseconds |
int artdaq::ShmemTransfer::receiveFragmentData | ( | RawDataType * | destination, | |
size_t | wordCount | |||
) | [override, virtual] |
Receive the body of a Fragment to the given destination pointer.
destination | Pointer to memory region where Fragment data should be stored | |
wordCount | Number of words of Fragment data to receive |
Implements artdaq::TransferInterface.
Definition at line 153 of file Shmem_transfer.cc.
int artdaq::ShmemTransfer::receiveFragmentHeader | ( | detail::RawFragmentHeader & | header, | |
size_t | receiveTimeout | |||
) | [override, virtual] |
Receive a Fragment Header from the transport mechanism.
[out] | header | Received Fragment Header |
receiveTimeout | Timeout for receive |
Implements artdaq::TransferInterface.
Definition at line 106 of file Shmem_transfer.cc.
CopyStatus artdaq::ShmemTransfer::transfer_fragment_min_blocking_mode | ( | Fragment const & | fragment, | |
size_t | send_timeout_usec | |||
) | [override] |
Transfer a Fragment to the destination. May not necessarily be reliable, but will not block longer than send_timeout_usec.
fragment | Fragment to transfer | |
send_timeout_usec | Timeout for send, in microseconds |
CopyStatus artdaq::ShmemTransfer::transfer_fragment_reliable_mode | ( | Fragment && | fragment | ) | [override] |
Transfer a Fragment to the destination. This should be reliable, if the underlying transport mechanism supports reliable sending.
fragment | Fragment to transfer |