1 #ifndef ARTDAQ_TRANSFERPLUGINS_MPITRANSFER_HH
2 #define ARTDAQ_TRANSFERPLUGINS_MPITRANSFER_HH
7 #include "artdaq-core/Data/Fragment.hh"
8 #include "artdaq/TransferPlugins/TransferInterface.hh"
62 CopyStatus
copyFragment(Fragment& frag,
size_t timeout_usec)
override;
89 CopyStatus sendFragment(Fragment&& frag,
size_t timeout_usec);
91 void cancelReq_(MPI_Request req)
const;
96 static std::mutex mpi_mutex_;
98 std::vector<MPI_Request> reqs_;
104 #endif //define ARTDAQ_TRANSFERPLUGINS_MPITRANSFER_HH
virtual ~MPITransfer()
MPITransfer Destructor.
int receiveFragmentHeader(detail::RawFragmentHeader &header, size_t receiveTimeout) override
Receive a Fragment Header from the transport mechanism.
CopyStatus moveFragment(Fragment &&frag) override
Move a Fragment to the destination.
MPITransfer(fhicl::ParameterSet pset, Role role)
MPITransfer Constructor.
MPITransfer & operator=(const MPITransfer &)=delete
Copy Assignment operator is deleted.
MPITransfer is a TransferInterface implementation plugin that transfers data using MPI...
int receiveFragmentData(RawDataType *destination, size_t wordCount) override
Receive the body of a Fragment to the given destination pointer.
CopyStatus copyFragment(Fragment &frag, size_t timeout_usec) override
Copy a Fragment to the destination. Forces asynchronous send.