artdaq  v2_03_00
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
Classes | Public Member Functions | List of all members
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:

Public Member Functions

 ShmemTransfer (fhicl::ParameterSet const &pset, Role role)
 ShmemTransfer Constructor. More...
 
virtual ~ShmemTransfer () noexcept
 ShmemTransfer Destructor.
 
int receiveFragment (Fragment &fragment, size_t receiveTimeout) override
 Receive a Fragment from Shared Memory. More...
 
CopyStatus copyFragment (Fragment &fragment, size_t send_timeout_usec=std::numeric_limits< size_t >::max()) override
 Copy a Fragment to the destination. May be unreliable. More...
 
CopyStatus moveFragment (Fragment &&fragment, size_t send_timeout_usec=std::numeric_limits< size_t >::max()) override
 Move a Fragment to the destination. More...
 
- Public Member Functions inherited from artdaq::TransferInterface
 TransferInterface (const fhicl::ParameterSet &ps, Role role)
 TransferInterface Constructor. More...
 
 TransferInterface (const TransferInterface &)=delete
 Copy Constructor is deleted.
 
TransferInterfaceoperator= (const TransferInterface &)=delete
 Copy Assignment operator is deleted. More...
 
virtual ~TransferInterface ()=default
 Default virtual Destructor.
 
virtual int receiveFragment (artdaq::Fragment &fragment, size_t receiveTimeout)=0
 Receive a Fragment from the transport mechanism. More...
 
virtual CopyStatus copyFragment (artdaq::Fragment &fragment, size_t send_timeout_usec=std::numeric_limits< size_t >::max())=0
 Copy a Fragment to the destination. May not necessarily be reliable. More...
 
virtual CopyStatus moveFragment (artdaq::Fragment &&fragment, size_t send_timeout_usec=std::numeric_limits< size_t >::max())=0
 Move a Fragment to the destination. This should be reliable, if the underlying transport mechanism supports reliable sending. More...
 
std::string uniqueLabel () const
 Get the unique label of this TransferInterface instance. More...
 
virtual int source_rank () const
 Get the source rank for this TransferInterface instance. More...
 
virtual int destination_rank () const
 Get the destination rank for this TransferInterface instance. More...
 

Additional Inherited Members

- Public Types inherited from artdaq::TransferInterface
enum  Role { Role::kSend, Role::kReceive }
 Used to determine if a TransferInterface is a Sender or Receiver. More...
 
enum  CopyStatus { CopyStatus::kSuccess, CopyStatus::kTimeout, CopyStatus::kErrorNotRequiringException }
 Returned from the send functions, this enumeration describes the possible return codes. If an exception occurs, it will be thrown and should be handled normally. More...
 
- Static Public Attributes inherited from artdaq::TransferInterface
static const int RECV_TIMEOUT = 0xfedcba98
 Value to be returned upon receive timeout. Because receivers otherwise return rank, this is also the limit on the number of ranks that artdaq currently supports.
 
- Protected Member Functions inherited from artdaq::TransferInterface
Role role () const
 Get the TransferInterface::Role of this TransferInterface. More...
 
- Protected Attributes inherited from artdaq::TransferInterface
size_t buffer_count_
 The number of Fragment transfers the TransferInterface can handle simultaneously.
 
const size_t max_fragment_size_words_
 The maximum size of the transferred Fragment objects, in artdaq::Fragment::RawDataType words.
 

Detailed Description

A TransferInterface implementation plugin that transfers data using Shared Memory.

Definition at line 19 of file ShmemTransfer.hh.

Constructor & Destructor Documentation

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

ShmemTransfer Constructor.

Parameters
psetParameterSet used to configure ShmemTransfer
roleRole of this ShmemTransfer instance (kSend or kReceive)
* ShmemTransfer accepts the following Parameters:
* "shm_key" (Default: hash of uniqueLabel): Key to use for shared memory segment
* 

ShmemTransfer also requires all Parameters for configuring a TransferInterface

Definition at line 8 of file Shmem_transfer.cc.

Member Function Documentation

artdaq::TransferInterface::CopyStatus artdaq::ShmemTransfer::copyFragment ( Fragment &  fragment,
size_t  send_timeout_usec = std::numeric_limits<size_t>::max() 
)
override

Copy a Fragment to the destination. May be unreliable.

Parameters
fragmentFragment to copy
send_timeout_usecTimeout for send, in microseconds (default size_t::MAX_VALUE)
Returns
CopyStatus detailing result of copy

Definition at line 200 of file Shmem_transfer.cc.

artdaq::TransferInterface::CopyStatus artdaq::ShmemTransfer::moveFragment ( Fragment &&  fragment,
size_t  send_timeout_usec = std::numeric_limits<size_t>::max() 
)
override

Move a Fragment to the destination.

Parameters
fragmentFragment to move
send_timeout_usecTimeout for send, in microseconds (default size_t::MAX_VALUE)
Returns
CopyStatus detailing result of move

Definition at line 206 of file Shmem_transfer.cc.

int artdaq::ShmemTransfer::receiveFragment ( Fragment &  fragment,
size_t  receiveTimeout 
)
override

Receive a Fragment from Shared Memory.

Parameters
[out]fragmentReceived Fragment
receiveTimeoutTimeout for receive, in microseconds
Returns
Rank of sender or RECV_TIMEOUT

Definition at line 118 of file Shmem_transfer.cc.


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