artdaq::MulticastTransfer Class Reference

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

Inheritance diagram for artdaq::MulticastTransfer:
artdaq::TransferInterface

List of all members.

Classes

class  subfragment_identifier

Public Member Functions

virtual ~MulticastTransfer ()
 < Copy Fragment::byte_t into local scope
 MulticastTransfer (fhicl::ParameterSet const &ps, Role role)
 MulticastTransfer Constructor.
int receiveFragment (artdaq::Fragment &fragment, size_t receiveTimeout) override
 Receive a Fragment using Multicast.
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 (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.
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.

Detailed Description

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

Definition at line 28 of file Multicast_transfer.cc.


Constructor & Destructor Documentation

virtual artdaq::MulticastTransfer::~MulticastTransfer (  )  [virtual]

< Copy Fragment::byte_t into local scope

Default destructor

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

MulticastTransfer Constructor.

Parameters:
ps ParameterSet used to configure MulticastTransfer
role Role 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 156 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() 
) [override, virtual]

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

Parameters:
fragment Fragment to copy
send_timeout_usec Timeout for send, in microseconds
Returns:
CopyStatus detailing result of copy

Implements artdaq::TransferInterface.

Definition at line 409 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() 
) [override, virtual]

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

Parameters:
fragment Fragment to move
send_timeout_usec Timeout for send, in microseconds
Returns:
CopyStatus detailing result of copy

Implements artdaq::TransferInterface.

Definition at line 403 of file Multicast_transfer.cc.

int artdaq::MulticastTransfer::receiveFragment ( artdaq::Fragment &  fragment,
size_t  receiveTimeout 
) [override, virtual]

Receive a Fragment using Multicast.

Parameters:
[out] fragment Received Fragment
receiveTimeout Timeout for receive, in microseconds
Returns:
Rank of sender or RECV_TIMEOUT

Reimplemented from artdaq::TransferInterface.

Definition at line 239 of file Multicast_transfer.cc.

int artdaq::MulticastTransfer::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 390 of file Multicast_transfer.cc.

int artdaq::MulticastTransfer::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 379 of file Multicast_transfer.cc.


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

Generated on 27 Jan 2018 for artdaq by  doxygen 1.6.1