$treeview $search $mathjax $extrastylesheet
artdaq
v3_04_01
$projectbrief
|
$projectbrief
|
$searchbox |
This interface defines the functions used to transfer data between artdaq applications. More...
#include <artdaq/TransferPlugins/TransferInterface.hh>
Classes | |
struct | Config |
Configuration of the TransferInterface. May be used for parameter validation. More... | |
Public Types | |
enum | ReceiveReturnCode { DATA_END = -2222, RECV_TIMEOUT = -1111, NO_RANK_INFO = -1, RECV_SUCCESS = 0 } |
Return codes from receive operations. More... | |
enum | Role { kSend, kReceive } |
Used to determine if a TransferInterface is a Sender or Receiver. More... | |
enum | CopyStatus { kSuccess, kTimeout, 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 | |
TransferInterface (const fhicl::ParameterSet &ps, Role role) | |
TransferInterface Constructor. | |
TransferInterface (const TransferInterface &) | |
Copy Constructor is deleted. | |
TransferInterface & | operator= (const TransferInterface &) |
Copy Assignment operator is deleted. | |
virtual | ~TransferInterface () |
Default virtual Destructor. | |
virtual int | receiveFragment (artdaq::Fragment &fragment, size_t receiveTimeout) |
Receive a Fragment from the transport mechanism. | |
virtual int | receiveFragmentHeader (detail::RawFragmentHeader &header, size_t receiveTimeout)=0 |
Receive a Fragment Header from the transport mechanism. | |
virtual int | receiveFragmentData (RawDataType *destination, size_t wordCount)=0 |
Receive the body of a Fragment to the given destination pointer. | |
virtual CopyStatus | transfer_fragment_min_blocking_mode (artdaq::Fragment const &fragment, size_t send_timeout_usec)=0 |
Transfer a Fragment to the destination. May not necessarily be reliable, but will not block longer than send_timeout_usec. | |
virtual CopyStatus | transfer_fragment_reliable_mode (artdaq::Fragment &&fragment)=0 |
Transfer a Fragment to the destination. This should be reliable, if the underlying transport mechanism supports reliable sending. | |
std::string | uniqueLabel () const |
Get the unique label of this TransferInterface instance. | |
virtual int | source_rank () const |
Get the source rank for this TransferInterface instance. | |
virtual int | destination_rank () const |
Get the destination rank for this TransferInterface instance. | |
virtual bool | isRunning () |
Determine whether the TransferInterface plugin is able to send/receive data. | |
virtual void | flush_buffers ()=0 |
Flush any in-flight data. This should be used by the receiver after the receive loop has ended. | |
Static Public Member Functions | |
static std::string | CopyStatusToString (CopyStatus in) |
Convert a CopyStatus variable to its string represenatation. | |
Protected Member Functions | |
Role | role () const |
Get the TransferInterface::Role of this TransferInterface. | |
Protected Attributes | |
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. |
This interface defines the functions used to transfer data between artdaq applications.
Definition at line 18 of file TransferInterface.hh.
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.
kSuccess |
The send operation completed successfully. |
kTimeout |
The send operation timed out. |
kErrorNotRequiringException |
Some error occurred, but no exception was thrown. |
Definition at line 64 of file TransferInterface.hh.
Return codes from receive operations.
DATA_END |
Value that is to be returned when a Transfer plugin determines that no more data will be arriving. |
RECV_TIMEOUT |
Value to be returned upon receive timeout. |
NO_RANK_INFO |
Will be returned from a successful receive that does not know the source rank (Transfer to OM art process). |
RECV_SUCCESS |
For code clarity, things checking for successful receive should check retval >= NO_RANK_INFO. |
Definition at line 43 of file TransferInterface.hh.
Used to determine if a TransferInterface is a Sender or Receiver.
kSend |
This TransferInterface is a Sender. |
kReceive |
This TransferInterface is a Receiver. |
Definition at line 54 of file TransferInterface.hh.
artdaq::TransferInterface::TransferInterface | ( | const fhicl::ParameterSet & | ps, | |
Role | role | |||
) |
TransferInterface Constructor.
ps | ParameterSet used for configuring the TransferInterface. See artdaq::TransferInterface::Config | |
role | Role of the TransferInterface (See TransferInterface::Role) |
Definition at line 7 of file TransferInterface.cc.
static std::string artdaq::TransferInterface::CopyStatusToString | ( | CopyStatus | in | ) | [inline, static] |
Convert a CopyStatus variable to its string represenatation.
in | CopyStatus to convert |
Definition at line 76 of file TransferInterface.hh.
virtual int artdaq::TransferInterface::destination_rank | ( | ) | const [inline, virtual] |
Get the destination rank for this TransferInterface instance.
Definition at line 168 of file TransferInterface.hh.
virtual bool artdaq::TransferInterface::isRunning | ( | ) | [inline, virtual] |
Determine whether the TransferInterface plugin is able to send/receive data.
Reimplemented in artdaq::AutodetectTransfer, artdaq::MulticastTransfer, artdaq::NullTransfer, artdaq::RTIDDSTransfer, artdaq::ShmemTransfer, and artdaq::TCPSocketTransfer.
Definition at line 174 of file TransferInterface.hh.
TransferInterface& artdaq::TransferInterface::operator= | ( | const TransferInterface & | ) |
Copy Assignment operator is deleted.
int artdaq::TransferInterface::receiveFragment | ( | artdaq::Fragment & | fragment, | |
size_t | receiveTimeout | |||
) | [virtual] |
Receive a Fragment from the transport mechanism.
[out] | fragment | Received Fragment |
receiveTimeout | Timeout for receive |
Reimplemented in artdaq::AutodetectTransfer, artdaq::MulticastTransfer, artdaq::NullTransfer, and artdaq::RTIDDSTransfer.
Definition at line 19 of file TransferInterface.cc.
virtual int artdaq::TransferInterface::receiveFragmentData | ( | RawDataType * | destination, | |
size_t | wordCount | |||
) | [pure virtual] |
Receive the body of a Fragment to the given destination pointer.
destination | Pointer to memory region where Fragment data should be stored | |
wordCount | Number of words of Fragment data to receive |
The precondition for calling this function is that you have received a valid header, therefore it does not have a , as the Fragment data should immediately be available.
Implemented in artdaq::AutodetectTransfer, artdaq::MulticastTransfer, artdaq::NullTransfer, artdaq::ShmemTransfer, and artdaq::TCPSocketTransfer.
virtual int artdaq::TransferInterface::receiveFragmentHeader | ( | detail::RawFragmentHeader & | header, | |
size_t | receiveTimeout | |||
) | [pure virtual] |
Receive a Fragment Header from the transport mechanism.
[out] | header | Received Fragment Header |
receiveTimeout | Timeout for receive |
Implemented in artdaq::AutodetectTransfer, artdaq::MulticastTransfer, artdaq::NullTransfer, artdaq::ShmemTransfer, and artdaq::TCPSocketTransfer.
Role artdaq::TransferInterface::role | ( | ) | const [inline, protected] |
Get the TransferInterface::Role of this TransferInterface.
Definition at line 201 of file TransferInterface.hh.
virtual int artdaq::TransferInterface::source_rank | ( | ) | const [inline, virtual] |
Get the source rank for this TransferInterface instance.
Definition at line 163 of file TransferInterface.hh.
virtual CopyStatus artdaq::TransferInterface::transfer_fragment_min_blocking_mode | ( | artdaq::Fragment const & | fragment, | |
size_t | send_timeout_usec | |||
) | [pure virtual] |
Transfer a Fragment to the destination. May not necessarily be reliable, but will not block longer than send_timeout_usec.
fragment | Fragment to transfer | |
send_timeout_usec | Timeout for send, in microseconds |
Implemented in artdaq::AutodetectTransfer, artdaq::MulticastTransfer, artdaq::NullTransfer, and artdaq::RTIDDSTransfer.
virtual CopyStatus artdaq::TransferInterface::transfer_fragment_reliable_mode | ( | artdaq::Fragment && | fragment | ) | [pure virtual] |
Transfer a Fragment to the destination. This should be reliable, if the underlying transport mechanism supports reliable sending.
fragment | Fragment to transfer |
Implemented in artdaq::AutodetectTransfer, artdaq::MulticastTransfer, artdaq::NullTransfer, and artdaq::RTIDDSTransfer.
std::string artdaq::TransferInterface::uniqueLabel | ( | ) | const [inline] |
Get the unique label of this TransferInterface instance.
Definition at line 157 of file TransferInterface.hh.