artdaq  v3_03_00
artdaq::RoutingMasterPolicy Class Referenceabstract

The interface through which RoutingMasterCore obtains Routing Tables using received Routing Tokens. More...

#include <artdaq/Application/Routing/RoutingMasterPolicy.hh>

Inheritance diagram for artdaq::RoutingMasterPolicy:
artdaq::CapacityTestPolicy artdaq::NoOpPolicy artdaq::RoundRobinPolicy

Public Member Functions

 RoutingMasterPolicy (fhicl::ParameterSet ps)
 RoutingMasterPolicy Constructor. More...
 
virtual ~RoutingMasterPolicy ()=default
 Default virtual Destructor.
 
virtual detail::RoutingPacket GetCurrentTable ()=0
 Generate a Routing Table using received tokens. More...
 
size_t GetReceiverCount () const
 Get the number of configured receivers. More...
 
size_t GetMaxNumberOfTokens () const
 Get the largest number of tokens that the RoutingMasterPolicy has seen at any one time. More...
 
void AddReceiverToken (int rank, unsigned new_slots_free)
 Add a token to the token list. More...
 
void Reset ()
 Reset the policy, setting the next sequence ID to be used to 1.
 

Protected Member Functions

std::unique_ptr< std::deque
< int > > 
getTokensSnapshot ()
 Gets the current token list, used for building Routing Tables.
 
void addUnusedTokens (std::unique_ptr< std::deque< int >> tokens)
 If necessary, return unused tokens to the token list, for subsequent updates.
 

Protected Attributes

Fragment::sequence_id_t next_sequence_id_
 The next sequence ID to be assigned.
 

Detailed Description

The interface through which RoutingMasterCore obtains Routing Tables using received Routing Tokens.

Definition at line 18 of file RoutingMasterPolicy.hh.

Constructor & Destructor Documentation

artdaq::RoutingMasterPolicy::RoutingMasterPolicy ( fhicl::ParameterSet  ps)
explicit

RoutingMasterPolicy Constructor.

Parameters
psParameterSet used to configure the RoutingMasterPolicy
* RoutingMasterPolicy accepts the following Parameters:
* "receiver_ranks" (REQUIRED): A list of integers indicating the ranks that the RoutingMasterPolicy should expect tokens from
* 

Definition at line 6 of file RoutingMasterPolicy.cc.

Member Function Documentation

void artdaq::RoutingMasterPolicy::AddReceiverToken ( int  rank,
unsigned  new_slots_free 
)

Add a token to the token list.

Parameters
rankRank that the token is from
new_slots_freeNumber of slots that are now free (should usually be 1)

Definition at line 15 of file RoutingMasterPolicy.cc.

virtual detail::RoutingPacket artdaq::RoutingMasterPolicy::GetCurrentTable ( )
pure virtual

Generate a Routing Table using received tokens.

Returns
A detail::RoutingPacket containing the Routing Table

This function is pure virtual, it should be overridden by derived classes.

Implemented in artdaq::RoundRobinPolicy, artdaq::CapacityTestPolicy, and artdaq::NoOpPolicy.

size_t artdaq::RoutingMasterPolicy::GetMaxNumberOfTokens ( ) const
inline

Get the largest number of tokens that the RoutingMasterPolicy has seen at any one time.

Returns
The largest number of tokens that the RoutingMasterPolicy has seen at any one time

Definition at line 54 of file RoutingMasterPolicy.hh.

size_t artdaq::RoutingMasterPolicy::GetReceiverCount ( ) const
inline

Get the number of configured receivers.

Returns
The size of the receiver_ranks list

Definition at line 48 of file RoutingMasterPolicy.hh.


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