artdaq
v3_00_03
|
The AutodetectTransfer TransferInterface plugin sets up a Shmem_transfer plugin or TCPSocket_transfer plugin depending if the source and destination are on the same host, to maximize throughput. More...
Public Member Functions | |
AutodetectTransfer (const fhicl::ParameterSet &pset, Role role) | |
AutodetectTransfer Constructor. More... | |
virtual | ~AutodetectTransfer ()=default |
AutodetectTransfer default Destructor. | |
int | receiveFragment (artdaq::Fragment &fragment, size_t receiveTimeout) override |
Receive a Fragment, using the underlying transfer plugin. More... | |
int | receiveFragmentHeader (detail::RawFragmentHeader &header, size_t receiveTimeout) override |
Receive a Fragment Header from the transport mechanism. More... | |
int | receiveFragmentData (RawDataType *destination, size_t wordCount) override |
Receive the body of a Fragment to the given destination pointer. More... | |
CopyStatus | copyFragment (artdaq::Fragment &fragment, size_t send_timeout_usec=std::numeric_limits< size_t >::max()) override |
Send a Fragment in non-reliable mode, using the underlying transfer plugin. More... | |
CopyStatus | moveFragment (artdaq::Fragment &&fragment, size_t send_timeout_usec=std::numeric_limits< size_t >::max()) override |
Send a Fragment in reliable mode, using the underlying transfer plugin. More... | |
![]() | |
TransferInterface (const fhicl::ParameterSet &ps, Role role) | |
TransferInterface Constructor. More... | |
TransferInterface (const TransferInterface &)=delete | |
Copy Constructor is deleted. | |
TransferInterface & | operator= (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... | |
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 | |
![]() | |
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 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. | |
![]() | |
Role | role () const |
Get the TransferInterface::Role of this TransferInterface. More... | |
![]() | |
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. | |
The AutodetectTransfer TransferInterface plugin sets up a Shmem_transfer plugin or TCPSocket_transfer plugin depending if the source and destination are on the same host, to maximize throughput.
Definition at line 13 of file Autodetect_transfer.cc.
artdaq::AutodetectTransfer::AutodetectTransfer | ( | const fhicl::ParameterSet & | pset, |
Role | role | ||
) |
AutodetectTransfer Constructor.
pset | ParameterSet used to configure AutodetectTransfer |
role | Role of this TransferInterface, either kReceive or kSend |
Definition at line 91 of file Autodetect_transfer.cc.
|
inlineoverridevirtual |
Send a Fragment in non-reliable mode, using the underlying transfer plugin.
fragment | The Fragment to send |
send_timeout_usec | How long to wait before aborting. Defaults to size_t::MAX_VALUE |
Implements artdaq::TransferInterface.
Definition at line 68 of file Autodetect_transfer.cc.
|
inlineoverridevirtual |
Send a Fragment in reliable mode, using the underlying transfer plugin.
fragment | The Fragment to send |
send_timeout_usec | How long to wait before aborting. Defaults to size_t::MAX_VALUE |
Implements artdaq::TransferInterface.
Definition at line 80 of file Autodetect_transfer.cc.
|
inlineoverridevirtual |
Receive a Fragment, using the underlying transfer plugin.
fragment | Output Fragment |
receiveTimeout | Time to wait before returning TransferInterface::RECV_TIMEOUT |
Reimplemented from artdaq::TransferInterface.
Definition at line 34 of file Autodetect_transfer.cc.
|
inlineoverridevirtual |
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 |
Implements artdaq::TransferInterface.
Definition at line 57 of file Autodetect_transfer.cc.
|
inlineoverridevirtual |
Receive a Fragment Header from the transport mechanism.
[out] | header | Received Fragment Header |
receiveTimeout | Timeout for receive |
Implements artdaq::TransferInterface.
Definition at line 46 of file Autodetect_transfer.cc.