artdaq  v3_00_01
artdaq::FragmentReceiverManager Class Reference

Receives Fragment objects from one or more DataSenderManager instances using TransferInterface plugins DataReceiverMaanger runs a reception thread for each source, and can automatically suppress reception from sources which are going faster than the others. More...

#include <proto/FragmentReceiverManager.hh>

Public Member Functions

 FragmentReceiverManager (const fhicl::ParameterSet &ps)
 FragmentReceiverManager Constructor. More...
 
virtual ~FragmentReceiverManager ()
 FragmentReceiverManager Destructor.
 
FragmentPtr recvFragment (int &rank, size_t timeout_usec=0)
 Receive a Fragment. More...
 
size_t count () const
 Return the count of Fragment objects received by this FragmentReceiverManager. More...
 
size_t slotCount (size_t rank) const
 Get the count of Fragment objects received by this FragmentReceiverManager from a given source. More...
 
size_t byteCount () const
 Get the total size of all data recieved by this FragmentReceiverManager. More...
 
void start_threads ()
 Start receiver threads for all enabled sources.
 
std::set< int > enabled_sources () const
 Get the list of enabled sources. More...
 

Detailed Description

Receives Fragment objects from one or more DataSenderManager instances using TransferInterface plugins DataReceiverMaanger runs a reception thread for each source, and can automatically suppress reception from sources which are going faster than the others.

Definition at line 27 of file FragmentReceiverManager.hh.

Constructor & Destructor Documentation

artdaq::FragmentReceiverManager::FragmentReceiverManager ( const fhicl::ParameterSet &  ps)
explicit

FragmentReceiverManager Constructor.

Parameters
psParameterSet used to configure the FragmentReceiverManager
* FragmentReceiverManager accepts the following Parameters:
* "auto_suppression_enabled" (Default: true): Whether to suppress a source that gets too far ahead
* "max_receive_difference" (Default: 50): Threshold (in sequence ID) for suppressing a source
* "receive_timeout_usec" (Default: 100000): The timeout for receive operations
* "enabled_sources" (OPTIONAL): List of sources which are enabled. If not specified, all sources are assumed enabled
* "sources" (Default: blank table): FHiCL table containing TransferInterface configurations for each source.
*   NOTE: "source_rank" MUST be specified (and unique) for each source!
* 

Definition at line 8 of file FragmentReceiverManager.cc.

Member Function Documentation

size_t artdaq::FragmentReceiverManager::byteCount ( ) const
inline

Get the total size of all data recieved by this FragmentReceiverManager.

Returns
The total size of all data received by this FragmentReceiverManager

Definition at line 221 of file FragmentReceiverManager.hh.

size_t artdaq::FragmentReceiverManager::count ( ) const
inline

Return the count of Fragment objects received by this FragmentReceiverManager.

Returns
The count of Fragment objects received by this FragmentReceiverManager

Definition at line 205 of file FragmentReceiverManager.hh.

std::set<int> artdaq::FragmentReceiverManager::enabled_sources ( ) const
inline

Get the list of enabled sources.

Returns
The list of enabled sources

Definition at line 88 of file FragmentReceiverManager.hh.

artdaq::FragmentPtr artdaq::FragmentReceiverManager::recvFragment ( int &  rank,
size_t  timeout_usec = 0 
)

Receive a Fragment.

Parameters
[out]rankRank of sender that sent the Fragment, or RECV_TIMEOUT
timeout_usecTimeout to wait for a Fragment to become ready
Returns
Pointer to received Fragment. May be nullptr if no Fragments are ready

Definition at line 113 of file FragmentReceiverManager.cc.

size_t artdaq::FragmentReceiverManager::slotCount ( size_t  rank) const
inline

Get the count of Fragment objects received by this FragmentReceiverManager from a given source.

Parameters
rankSource rank to get count for
Returns
The count of Fragment objects received by this FragmentReceiverManager from the source

Definition at line 213 of file FragmentReceiverManager.hh.


The documentation for this class was generated from the following files: