1 #ifndef ARTDAQ_TRANSFERPLUGINS_MPITRANSFER_HH
2 #define ARTDAQ_TRANSFERPLUGINS_MPITRANSFER_HH
6 #include "artdaq-core/Data/Fragment.hh"
8 #include "artdaq/TransferPlugins/TransferInterface.hh"
93 CopyStatus sendFragment(Fragment&& frag,
size_t timeout_usec);
95 void cancelReq_(MPI_Request req)
const;
100 static std::mutex mpi_mutex_;
102 std::vector<MPI_Request> reqs_;
108 #endif // define ARTDAQ_TRANSFERPLUGINS_MPITRANSFER_HH
virtual ~MPITransfer()
MPITransfer Destructor.
void flush_buffers() override
Flush any in-flight data. This should be used by the receiver after the receive loop has ended...
int receiveFragmentHeader(detail::RawFragmentHeader &header, size_t receiveTimeout) override
Receive a Fragment Header from the transport mechanism.
MPITransfer(fhicl::ParameterSet pset, Role role)
MPITransfer Constructor.
CopyStatus transfer_fragment_reliable_mode(Fragment &&frag) override
Move a Fragment to the destination.
MPITransfer & operator=(const MPITransfer &)=delete
Copy Assignment operator is deleted.
MPITransfer is a TransferInterface implementation plugin that transfers data using MPI...
CopyStatus transfer_fragment_min_blocking_mode(Fragment const &frag, size_t timeout_usec) override
Copy a Fragment to the destination. Forces asynchronous send.
int receiveFragmentData(RawDataType *destination, size_t wordCount) override
Receive the body of a Fragment to the given destination pointer.