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"
77 void cancelReq_(
size_t buf,
bool blocking_wait =
true);
79 void post_(
size_t buf);
90 size_t expected_count_;
95 int saved_wait_result_;
96 std::vector<int> ready_indices_;
97 std::vector<MPI_Status> ready_statuses_;
99 static std::mutex mpi_mutex_;
100 bool synchronous_sends_;
102 std::vector<MPI_Request> reqs_;
107 #endif //define ARTDAQ_TRANSFERPLUGINS_MPITRANSFER_HH
Role role() const
Get the TransferInterface::Role of this TransferInterface.
virtual ~MPITransfer()
MPITransfer Destructor.
int receiveFragment(Fragment &frag, size_t timeout_usec) override
Receive a Fragment using MPI.
MPITransfer(fhicl::ParameterSet pset, Role role)
MPITransfer Constructor.
CopyStatus moveFragment(Fragment &&frag, size_t timeout_usec) override
Move a Fragment to the destination.
Role
Used to determine if a TransferInterface is a Sender or Receiver.
This interface defines the functions used to transfer data between artdaq applications.
MPITransfer is a TransferInterface implementation plugin that transfers data using MPI...
CopyStatus
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.
CopyStatus copyFragment(Fragment &frag, size_t timeout_usec) override
Copy a Fragment to the destination. Forces asynchronous send.