1 #ifndef ARTDAQ_DAQRATE_DATATRANSFERMANAGER_HH
2 #define ARTDAQ_DAQRATE_DATATRANSFERMANAGER_HH
7 #include <condition_variable>
9 #include "fhiclcpp/fwd.h"
11 #include "artdaq-core/Data/Fragment.hh"
12 #include "artdaq/TransferPlugins/TransferInterface.hh"
13 #include "artdaq/DAQrate/detail/FragCounter.hh"
14 #include "artdaq-utilities/Plugins/MetricManager.hh"
15 #include "artdaq/DAQrate/SharedMemoryEventManager.hh"
19 class DataReceiverManager;
46 explicit DataReceiverManager(
const fhicl::ParameterSet& ps, std::shared_ptr<SharedMemoryEventManager> shm);
105 std::shared_ptr<detail::FragCounter>
GetReceivedFragmentCount() {
return std::shared_ptr<detail::FragCounter>(&recv_frag_count_); }
108 void runReceiver_(
int);
110 std::atomic<bool> stop_requested_;
111 std::atomic<size_t> stop_requested_time_;
113 std::map<int, boost::thread> source_threads_;
114 std::map<int, std::unique_ptr<TransferInterface>> source_plugins_;
115 std::set<int> enabled_sources_;
116 std::set<int> running_sources_;
122 size_t receive_timeout_;
123 size_t stop_timeout_ms_;
124 std::shared_ptr<SharedMemoryEventManager> shm_manager_;
126 bool non_reliable_mode_enabled_;
127 size_t non_reliable_mode_retry_count_;
135 return recv_frag_count_.
count();
143 return recv_frag_count_.slotCount(rank);
151 return recv_frag_size_.count();
153 #endif //ARTDAQ_DAQRATE_DATATRANSFERMANAGER_HH
std::shared_ptr< detail::FragCounter > GetReceivedFragmentCount()
Get a pointer to the FragCounter instance tracking the number of received Fragments.
Keep track of the count of Fragments received from a set of sources.
std::set< int > enabled_sources() const
Get the list of enabled sources.
DataReceiverManager(const fhicl::ParameterSet &ps, std::shared_ptr< SharedMemoryEventManager > shm)
DataReceiverManager Constructor.
std::shared_ptr< SharedMemoryEventManager > getSharedMemoryEventManager() const
Get a handle to the SharedMemoryEventManager connected to this DataReceiverManager.
Receives Fragment objects from one or more DataSenderManager instances using TransferInterface plugin...
size_t slotCount(size_t rank) const
Get the count of Fragment objects received by this DataReceiverManager from a given source...
std::set< int > running_sources() const
Get the list of sources which are still receiving data.
size_t count() const
Return the count of Fragment objects received by this DataReceiverManager.
virtual ~DataReceiverManager()
DataReceiverManager Destructor.
void start_threads()
Start receiver threads for all enabled sources.
size_t count() const
Get the total number of Fragments received.
void stop_threads()
Stop receiver threads.
size_t byteCount() const
Get the total size of all data recieved by this DataReceiverManager.