artdaq  v3_02_00
artdaq::DataSenderManager Class Reference

Sends Fragment objects using TransferInterface plugins. Uses Routing Tables if confgiured, otherwise will Round-Robin Fragments to the destinations. More...

#include <artdaq/DAQrate/DataSenderManager.hh>

Classes

struct  Config
 
struct  DestinationsConfig
 
struct  RoutingTableConfig
 

Public Member Functions

 DataSenderManager (const fhicl::ParameterSet &ps)
 DataSenderManager Constructor. More...
 
virtual ~DataSenderManager ()
 DataSenderManager Destructor.
 
std::pair< int,
TransferInterface::CopyStatus
sendFragment (Fragment &&frag)
 Send the given Fragment. Return the rank of the destination to which the Fragment was sent. More...
 
size_t count () const
 Return the count of Fragment objects sent by this DataSenderManagerq. More...
 
size_t slotCount (size_t rank) const
 Get the count of Fragment objects sent by this DataSenderManager to a given destination. More...
 
size_t destinationCount () const
 Get the number of configured destinations. More...
 
std::set< int > enabled_destinations () const
 Get the list of enabled destinations. More...
 
size_t GetRoutingTableEntryCount () const
 Gets the current size of the Routing Table, in case other parts of the system want to use this information. More...
 

Detailed Description

Sends Fragment objects using TransferInterface plugins. Uses Routing Tables if confgiured, otherwise will Round-Robin Fragments to the destinations.

Definition at line 30 of file DataSenderManager.hh.

Constructor & Destructor Documentation

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

DataSenderManager Constructor.

Parameters
psParameterSet used to configure the DataSenderManager
* DataSenderManager accepts the following Parameters:
* "broadcast_sends" (Default: false): Send all Fragments to all destinations
* "nonblocking_sends" (Default: false): If true, will use non-reliable mode of TransferInterface plugins
* "send_timeout_usec" (Default: 5000000 (5 seconds): Timeout for sends in non-reliable modes (broadcast and nonblocking)
* "send_retry_count" (Default: 2): Number of times to retry a send in non-reliable mode
* "routing_table_config" (Default: Empty ParameterSet): FHiCL table for RoutingMaster parameters
*   "use_routing_master" (Default: false): True if using the Routing Master
*   "table_update_port" (Default: 35556): Port that table updates should arrive on
*   "table_update_address" (Default: "227.128.12.28"): Address that table updates should arrive on
*   "table_acknowledge_port" (Default: 35557): Port that acknowledgements should be sent to
*   "routing_master_hostname" (Default: "localhost"): Host that acknowledgements should be sent to
*   "routing_timeout_ms" (Default: 1000): Time to wait for a routing table update if the table is exhausted
*   "routing_retry_count" (Default: 5): Number of times to retry calculating destination before giving up (DROPPING DATA!)
* "destinations" (Default: Empty ParameterSet): FHiCL table for TransferInterface configurations for each destaintion
*   NOTE: "destination_rank" MUST be specified (and unique) for each destination!
* "enabled_destinations" (OPTIONAL): If specified, only the destination ranks listed will be enabled. If not specified,
* all destinations will be enabled.
* 

Definition at line 16 of file DataSenderManager.cc.

Member Function Documentation

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

Return the count of Fragment objects sent by this DataSenderManagerq.

Returns
The count of Fragment objects sent by this DataSenderManager

Definition at line 177 of file DataSenderManager.hh.

size_t artdaq::DataSenderManager::destinationCount ( ) const
inline

Get the number of configured destinations.

Returns
The number of configured destinations

Definition at line 120 of file DataSenderManager.hh.

std::set<int> artdaq::DataSenderManager::enabled_destinations ( ) const
inline

Get the list of enabled destinations.

Returns
The list of enabled destiantion ranks

Definition at line 126 of file DataSenderManager.hh.

size_t artdaq::DataSenderManager::GetRoutingTableEntryCount ( ) const

Gets the current size of the Routing Table, in case other parts of the system want to use this information.

Returns
The current size of the Routing Table. Note that the Routing Table is trimmed after each successful send.

Definition at line 287 of file DataSenderManager.cc.

std::pair< int, artdaq::TransferInterface::CopyStatus > artdaq::DataSenderManager::sendFragment ( Fragment &&  frag)

Send the given Fragment. Return the rank of the destination to which the Fragment was sent.

Parameters
fragFragment to sent
Returns
Pair containing Rank of destination for Fragment and the CopyStatus from the send call

Definition at line 342 of file DataSenderManager.cc.

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

Get the count of Fragment objects sent by this DataSenderManager to a given destination.

Parameters
rankDestination rank to get count for
Returns
The count of Fragment objects sent by this DataSenderManager to the destination

Definition at line 185 of file DataSenderManager.hh.


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