artdaq  v3_04_00
artdaq::RTIDDSTransfer Class Reference

RTIDDSTransfer is a TransferInterface implementation plugin that transfers data using RTI DDS. More...

Inheritance diagram for artdaq::RTIDDSTransfer:
artdaq::TransferInterface

Public Member Functions

virtual ~RTIDDSTransfer ()=default
 RTIDDSTransfer default Destructor.
 
 RTIDDSTransfer (fhicl::ParameterSet const &ps, Role role)
 RTIDDSTransfer Constructor. More...
 
int receiveFragment (artdaq::Fragment &fragment, size_t receiveTimeout) override
 Receive a Fragment using DDS. More...
 
CopyStatus transfer_fragment_min_blocking_mode (artdaq::Fragment const &fragment, size_t send_timeout_usec=std::numeric_limits< size_t >::max()) override
 Transfer a Fragment to the destination. May not necessarily be reliable, but will not block longer than send_timeout_usec. More...
 
CopyStatus transfer_fragment_reliable_mode (artdaq::Fragment &&fragment) override
 Transfer a Fragment to the destination. This should be reliable, if the underlying transport mechanism supports reliable sending. More...
 
bool isRunning () override
 Determine whether the TransferInterface plugin is able to send/receive data. More...
 
void flush_buffers () override
 Flush any in-flight data. This should be used by the receiver after the receive loop has ended.
 
- 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 receiveFragmentHeader (detail::RawFragmentHeader &header, size_t receiveTimeout)=0
 Receive a Fragment Header from the transport mechanism. More...
 
virtual int receiveFragmentData (RawDataType *destination, size_t wordCount)=0
 Receive the body of a Fragment to the given destination pointer. 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  ReceiveReturnCode : int { DATA_END = -2222, RECV_TIMEOUT = -1111, NO_RANK_INFO = -1, RECV_SUCCESS = 0 }
 Return codes from receive operations More...
 
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...
 
using Parameters = fhicl::WrappedTable< Config >
 
- Static Public Member Functions inherited from artdaq::TransferInterface
static std::string CopyStatusToString (CopyStatus in)
 Convert a CopyStatus variable to its string represenatation More...
 
- Protected Member Functions inherited from artdaq::TransferInterface
Role role () const
 Get the TransferInterface::Role of this TransferInterface. More...
 
- Protected Attributes inherited from artdaq::TransferInterface
const Role role_
 Whether this instance of TransferInterface is a sender or receiver.
 
const int source_rank_
 Rank of source.
 
const int destination_rank_
 Rank of destination.
 
const std::string unique_label_
 Unique label of transfer (ideally the same on sender and receiver)
 
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

RTIDDSTransfer is a TransferInterface implementation plugin that transfers data using RTI DDS.

Definition at line 22 of file RTIDDS_transfer.cc.

Constructor & Destructor Documentation

artdaq::RTIDDSTransfer::RTIDDSTransfer ( fhicl::ParameterSet const &  ps,
Role  role 
)
inline

RTIDDSTransfer Constructor.

Parameters
psParameterSet used to configure RTIDDSTransfer
roleRole of this RTIDDSTransfer instance (kSend or kReceive)

RTIDDSTransfer only requires the Parameters for configuring a TransferInterface

Definition at line 37 of file RTIDDS_transfer.cc.

Member Function Documentation

bool artdaq::RTIDDSTransfer::isRunning ( )
inlineoverridevirtual

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 71 of file RTIDDS_transfer.cc.

int artdaq::RTIDDSTransfer::receiveFragment ( artdaq::Fragment fragment,
size_t  receiveTimeout 
)
overridevirtual

Receive a Fragment using DDS.

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

Reimplemented from artdaq::TransferInterface.

Definition at line 93 of file RTIDDS_transfer.cc.

artdaq::TransferInterface::CopyStatus artdaq::RTIDDSTransfer::transfer_fragment_min_blocking_mode ( artdaq::Fragment const &  fragment,
size_t  send_timeout_usec = std::numeric_limits<size_t>::max() 
)
overridevirtual

Transfer a Fragment to the destination. May not necessarily be reliable, but will not block longer than send_timeout_usec.

Parameters
fragmentFragment to transfer
send_timeout_usecTimeout for send, in microseconds
Returns
CopyStatus detailing result of transfer

Implements artdaq::TransferInterface.

Definition at line 138 of file RTIDDS_transfer.cc.

artdaq::TransferInterface::CopyStatus artdaq::RTIDDSTransfer::transfer_fragment_reliable_mode ( artdaq::Fragment &&  fragment)
overridevirtual

Transfer a Fragment to the destination. This should be reliable, if the underlying transport mechanism supports reliable sending.

Parameters
fragmentFragment to transfer
Returns
CopyStatus detailing result of copy

Implements artdaq::TransferInterface.

Definition at line 131 of file RTIDDS_transfer.cc.


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