artdaq  v2_02_03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
Classes | Public Types | Public Member Functions | List of all members
artdaq::MulticastTransfer Class Reference

MulticastTransfer is a TransferInterface implementation plugin that transfers data using Multicast. More...

+ Inheritance diagram for artdaq::MulticastTransfer:

Public Types

using byte_t = artdaq::Fragment::byte_t
 Copy Fragment::byte_t into local scope.
 
- 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...
 

Public Member Functions

virtual ~MulticastTransfer ()=default
 Default destructor.
 
 MulticastTransfer (fhicl::ParameterSet const &ps, Role role)
 MulticastTransfer Constructor. More...
 
int receiveFragment (artdaq::Fragment &fragment, size_t receiveTimeout) override
 Receive a Fragment using Multicast. More...
 
CopyStatus copyFragment (artdaq::Fragment &fragment, size_t send_timeout_usec=std::numeric_limits< size_t >::max()) override
 Copy a Fragment to the destination. Multicast is always unreliable. More...
 
CopyStatus moveFragment (artdaq::Fragment &&fragment, size_t send_timeout_usec=std::numeric_limits< size_t >::max()) override
 Move a Fragment to the destination. Multicast is always unreliable. 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.
 
std::string uniqueLabel () const
 Get the unique label of this TransferInterface instance. More...
 
int source_rank () const
 Get the source rank for this TransferInterface instance. More...
 
int destination_rank () const
 Get the destination rank for this TransferInterface instance. More...
 

Additional Inherited Members

- 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

MulticastTransfer is a TransferInterface implementation plugin that transfers data using Multicast.

Definition at line 27 of file Multicast_transfer.cc.

Constructor & Destructor Documentation

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

MulticastTransfer Constructor.

Parameters
psParameterSet used to configure MulticastTransfer
roleRole of this MulticastTransfer instance (kSend or kReceive)
* MulticastTransfer accepts the following Parameters:
* "subfragment_size" (REQUIRED): Size of the sub-Fragments
* "subfragments_per_send" (REQUIRED): How many sub-Fragments to send in each batch
* "pause_on_copy_usecs" (Default: 0): Pause after sending a batch of sub-Fragments for this many microseconds
* "multicast_port" (REQUIRED): Port number to connect to
* "multicast_address" (REQUIRED): Multicast address to send to/receive from
* "local_address" (REQUIRED): Local origination address for multicast
* "receive_buffer_size" (Default: 0): The UDP receive buffer size. 0 uses automatic size.
* 

MulticastTransfer also requires all Parameters for configuring a TransferInterface

Definition at line 138 of file Multicast_transfer.cc.

Member Function Documentation

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

Copy a Fragment to the destination. Multicast is always unreliable.

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

Implements artdaq::TransferInterface.

Definition at line 369 of file Multicast_transfer.cc.

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

Move a Fragment to the destination. Multicast is always unreliable.

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

Implements artdaq::TransferInterface.

Definition at line 363 of file Multicast_transfer.cc.

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

Receive a Fragment using Multicast.

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

Implements artdaq::TransferInterface.

Definition at line 221 of file Multicast_transfer.cc.


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