$treeview $search $mathjax $extrastylesheet
artdaq
v3_04_00
$projectbrief
|
$projectbrief
|
$searchbox |
00001 #ifndef artdaq_TransferPlugins_ShmemTransfer_hh 00002 #define artdaq_TransferPlugins_ShmemTransfer_hh 00003 00004 #include "fhiclcpp/fwd.h" 00005 00006 #include "artdaq/TransferPlugins/TransferInterface.hh" 00007 #include "artdaq-core/Core/SharedMemoryFragmentManager.hh" 00008 00009 namespace artdaq 00010 { 00014 class ShmemTransfer : public TransferInterface 00015 { 00016 public: 00017 00032 ShmemTransfer(fhicl::ParameterSet const& pset, Role role); 00033 00037 virtual ~ShmemTransfer() noexcept; 00038 00045 int receiveFragment(Fragment& fragment, 00046 size_t receiveTimeout) override; 00047 00054 int receiveFragmentHeader(detail::RawFragmentHeader& header, size_t receiveTimeout) override; 00055 00062 int receiveFragmentData(RawDataType* destination, size_t wordCount) override; 00063 00070 CopyStatus transfer_fragment_min_blocking_mode(Fragment const& fragment, size_t send_timeout_usec) override; 00071 00077 CopyStatus transfer_fragment_reliable_mode(Fragment&& fragment) override; 00078 00083 bool isRunning() override; 00084 00089 void flush_buffers() override; 00090 private: 00091 CopyStatus sendFragment(Fragment&& fragment, 00092 size_t send_timeout_usec, bool reliable = false); 00093 00094 std::unique_ptr<SharedMemoryFragmentManager> shm_manager_; 00095 00096 }; 00097 } 00098 00099 #endif // artdaq_TransferPlugins/ShmemTransfer_hh