artdaq::ShmemTransfer Class Reference

A TransferInterface implementation plugin that transfers data using Shared Memory. More...

#include <artdaq/TransferPlugins/ShmemTransfer.hh>

Inheritance diagram for artdaq::ShmemTransfer:
artdaq::TransferInterface

List of all members.

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 copyFragment (Fragment &fragment, size_t send_timeout_usec) override
 Copy a Fragment to the destination. May be unreliable.
CopyStatus moveFragment (Fragment &&fragment) override
 Move a Fragment to the destination.
bool isRunning () override
 Determine whether the TransferInterface plugin is able to send/receive data.

Detailed Description

A TransferInterface implementation plugin that transfers data using Shared Memory.

Definition at line 14 of file ShmemTransfer.hh.


Constructor & Destructor Documentation

artdaq::ShmemTransfer::ShmemTransfer ( fhicl::ParameterSet const &  pset,
Role  role 
)

ShmemTransfer Constructor.

Parameters:
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.


Member Function Documentation

CopyStatus artdaq::ShmemTransfer::copyFragment ( Fragment &  fragment,
size_t  send_timeout_usec 
) [override]

Copy a Fragment to the destination. May be unreliable.

Parameters:
fragment Fragment to copy
send_timeout_usec Timeout for send, in microseconds
Returns:
CopyStatus detailing result of copy
bool artdaq::ShmemTransfer::isRunning (  )  [override, virtual]

Determine whether the TransferInterface plugin is able to send/receive data.

Returns:
True if the TransferInterface plugin is currently able to send/receive data

Reimplemented from artdaq::TransferInterface.

Definition at line 234 of file Shmem_transfer.cc.

CopyStatus artdaq::ShmemTransfer::moveFragment ( Fragment &&  fragment  )  [override]

Move a Fragment to the destination.

Parameters:
fragment Fragment to move
Returns:
CopyStatus detailing result of move
int artdaq::ShmemTransfer::receiveFragment ( Fragment &  fragment,
size_t  receiveTimeout 
) [override]

Receive a Fragment from Shared Memory.

Parameters:
[out] fragment Received Fragment
receiveTimeout Timeout for receive, in microseconds
Returns:
Rank of sender or RECV_TIMEOUT
int artdaq::ShmemTransfer::receiveFragmentData ( RawDataType *  destination,
size_t  wordCount 
) [override, virtual]

Receive the body of a Fragment to the given destination pointer.

Parameters:
destination Pointer to memory region where Fragment data should be stored
wordCount Number of words of Fragment data to receive
Returns:
The rank the Fragment was received from (should be source_rank), or RECV_TIMEOUT

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.

Parameters:
[out] header Received Fragment Header
receiveTimeout Timeout for receive
Returns:
The rank the Fragment was received from (should be source_rank), or RECV_TIMEOUT

Implements artdaq::TransferInterface.

Definition at line 106 of file Shmem_transfer.cc.


The documentation for this class was generated from the following files:

Generated on 25 Sep 2018 for artdaq by  doxygen 1.6.1