artdaq  v3_06_00
artdaq::CommandableFragmentGenerator Class Referenceabstract

CommandableFragmentGenerator is a FragmentGenerator-derived abstract class that defines the interface for a FragmentGenerator designed as a state machine with start, stop, etc., transition commands. More...

#include <artdaq/Generators/CommandableFragmentGenerator.hh>

Inheritance diagram for artdaq::CommandableFragmentGenerator:
artdaq::FragmentGenerator artdaq::CompositeDriver artdaqtest::CommandableFragmentGeneratorTest

Classes

struct  Config
 Configuration of the CommandableFragmentGenerator. May be used for parameter validation More...
 

Public Types

using Parameters = fhicl::WrappedTable< Config >
 Used for ParameterSet validation (if desired)
 

Public Member Functions

 CommandableFragmentGenerator (const fhicl::ParameterSet &ps)
 CommandableFragmentGenerator Constructor. More...
 
virtual ~CommandableFragmentGenerator ()
 CommandableFragmentGenerator Destructor. More...
 
void joinThreads ()
 Join any data-taking threads. Should be called when destructing CommandableFragmentGenerator. More...
 
bool getNext (FragmentPtrs &output) overridefinal
 getNext calls either applyRequests or getNext_ to get any data that is ready to be sent to the EventBuilders More...
 
void applyRequestsIgnoredMode (artdaq::FragmentPtrs &frags)
 Create fragments using data buffer for request mode Ignored. Precondition: dataBufferMutex_ and request_mutex_ are locked More...
 
void applyRequestsSingleMode (artdaq::FragmentPtrs &frags)
 Create fragments using data buffer for request mode Single. Precondition: dataBufferMutex_ and request_mutex_ are locked More...
 
void applyRequestsBufferMode (artdaq::FragmentPtrs &frags)
 Create fragments using data buffer for request mode Buffer. Precondition: dataBufferMutex_ and request_mutex_ are locked More...
 
void applyRequestsWindowMode (artdaq::FragmentPtrs &frags)
 Create fragments using data buffer for request mode Window. Precondition: dataBufferMutex_ and request_mutex_ are locked More...
 
void applyRequestsWindowMode_CheckAndFillDataBuffer (artdaq::FragmentPtrs &frags, artdaq::Fragment::fragment_id_t id, artdaq::Fragment::sequence_id_t seq, artdaq::Fragment::timestamp_t ts)
 
bool applyRequests (FragmentPtrs &frags)
 See if any requests have been received, and add the corresponding data Fragment objects to the output list. More...
 
bool sendEmptyFragment (FragmentPtrs &frags, size_t sequenceId, Fragment::fragment_id_t fragmentId, std::string desc)
 Send an EmptyFragmentType Fragment. More...
 
void sendEmptyFragments (FragmentPtrs &frags, std::map< Fragment::sequence_id_t, Fragment::timestamp_t > &requests)
 This function is for Buffered and Single request modes, as they can only respond to one data request at a time If the request message seqID > ev_counter, simply send empties until they're equal. More...
 
void checkSentWindows (Fragment::sequence_id_t seq)
 Check the windows_sent_ooo_ map for sequence IDs that may be removed. More...
 
void startDataThread ()
 Function that launches the data thread (getDataLoop())
 
void startMonitoringThread ()
 Function that launches the monitoring thread (getMonitoringDataLoop())
 
void getDataLoop ()
 When separate_data_thread is set to true, this loop repeatedly calls getNext_ and adds returned Fragment objects to the data buffer, blocking when the data buffer is full.
 
bool waitForDataBufferReady (Fragment::fragment_id_t id)
 Wait for the data buffer to drain (dataBufferIsTooLarge returns false), periodically reporting status. More...
 
bool dataBufferIsTooLarge (Fragment::fragment_id_t id)
 Test the configured constraints on the data buffer. More...
 
void getDataBufferStats (Fragment::fragment_id_t id)
 Calculate the size of the dataBuffer and report appropriate metrics. More...
 
void getDataBuffersStats ()
 
void checkDataBuffer (Fragment::fragment_id_t id)
 Perform data buffer pruning operations. If the RequestMode is Single, removes all but the latest Fragment from the data buffer. In Window and Buffer RequestModes, this function discards the oldest Fragment objects until the data buffer is below its size constraints, then also checks for stale Fragments, based on the timestamp of the most recent Fragment.
 
void checkDataBuffers ()
 
std::map
< Fragment::sequence_id_t,
std::chrono::steady_clock::time_point > 
GetSentWindowList (Fragment::fragment_id_t id)
 
void getMonitoringDataLoop ()
 This function regularly calls checkHWStatus_(), and sets the isHardwareOK flag accordingly.
 
std::vector
< Fragment::fragment_id_t
fragmentIDs () override
 Get the list of Fragment IDs handled by this CommandableFragmentGenerator. More...
 
size_t ev_counter () const
 Get the current value of the event counter. More...
 
RequestMode request_mode () const
 Get the current request mode of the CommandableFragmentGenerator More...
 
void StartCmd (int run, uint64_t timeout, uint64_t timestamp)
 Start the CommandableFragmentGenerator. More...
 
void StopCmd (uint64_t timeout, uint64_t timestamp)
 Stop the CommandableFragmentGenerator. More...
 
void PauseCmd (uint64_t timeout, uint64_t timestamp)
 Pause the CommandableFragmentGenerator. More...
 
void ResumeCmd (uint64_t timeout, uint64_t timestamp)
 Resume the CommandableFragmentGenerator. More...
 
std::string ReportCmd (std::string const &which="")
 Get a report about a user-specified run-time quantity. More...
 
virtual std::string metricsReportingInstanceName () const
 Get the name used when reporting metrics. More...
 
bool exception () const
 Get the current value of the exception flag. More...
 
virtual bool metaCommand (std::string const &command, std::string const &arg)
 The meta-command is used for implementing user-specific commands in a CommandableFragmentGenerator. More...
 

Protected Member Functions

int run_number () const
 Get the current Run number. More...
 
int subrun_number () const
 Get the current Subrun number. More...
 
uint64_t timeout () const
 Timeout of last command. More...
 
uint64_t timestamp () const
 Timestamp of last command. More...
 
artdaq::Fragment::fragment_id_t fragment_id () const
 
bool should_stop () const
 Get the current value of the should_stop flag. More...
 
bool check_stop ()
 Routine used by applyRequests to make sure that all outstanding requests have been fulfilled before returning. More...
 
int board_id () const
 Gets the current board_id. More...
 
size_t ev_counter_inc (size_t step=1, bool force=false)
 Increment the event counter, if the current RequestMode allows it. More...
 
void set_exception (bool exception)
 Control the exception flag. More...
 
void metricsReportingInstanceName (std::string const &name)
 Sets the name for metrics reporting. More...
 
std::string printMode_ ()
 Return the string representation of the current RequestMode. More...
 
size_t dataBufferFragmentCount_ ()
 
virtual bool getNext_ (FragmentPtrs &output)=0
 Obtain the next group of Fragments, if any are available. Return false if readout cannot continue, if we are 'stopped', or if we are not running in state-machine mode. Note that getNext_() must return n of each fragmentID declared by fragmentIDs_(). More...
 
virtual bool checkHWStatus_ ()
 Check any relavent hardware status registers. Return false if an error condition exists that should halt data-taking. This function should probably make MetricManager calls. More...
 
virtual void start ()=0
 If a CommandableFragmentGenerator subclass is reading from a file, and start() is called, any run-, subrun-, and event-numbers in the data read from the file must be over-written by the specified run number, etc. After a call to StartCmd(), and until a call to StopCmd(), getNext_() is expected to return true as long as datataking is intended. More...
 
virtual void stopNoMutex ()=0
 On call to StopCmd, stopNoMutex() is called prior to StopCmd acquiring the mutex More...
 
virtual void stop ()=0
 If a CommandableFragmentGenerator subclass is reading from a file, calling stop() should arrange that the next call to getNext_() returns false, rather than allowing getNext_() to read to the end of the file. More...
 
virtual void pauseNoMutex ()
 On call to PauseCmd, pauseNoMutex() is called prior to PauseCmd acquiring the mutex More...
 
virtual void pause ()
 If a CommandableFragmentGenerator subclass is reading from hardware, the implementation of pause() should tell the hardware to stop sending data. More...
 
virtual void resume ()
 The subrun number will be incremented before a call to resume. More...
 
virtual std::string report ()
 Let's say that the contract with the report() functions is that they return a non-empty string if they have something useful to report, but if they don't know how to handle a given request, they simply return an empty string and the ReportCmd() takes care of saying "the xyz command is not currently supported". For backward compatibility, we keep the report function that takes no arguments and add one that takes a "which" argument. In the ReportCmd function, we'll call the more specific one first. More...
 
virtual std::string reportSpecific (std::string const &what)
 Report the status of a specific quantity More...
 

Protected Attributes

std::mutex mutex_
 Mutex used to ensure that multiple transition commands do not run at the same time.
 

Detailed Description

CommandableFragmentGenerator is a FragmentGenerator-derived abstract class that defines the interface for a FragmentGenerator designed as a state machine with start, stop, etc., transition commands.

Users of classes derived from CommandableFragmentGenerator will call these transitions via the publically defined StartCmd(), StopCmd(), etc.; these public functions contain functionality considered properly universal to all CommandableFragmentGenerator-derived classes, including calls to private virtual functions meant to be overridden in derived classes. The same applies to this class's implementation of the FragmentGenerator::getNext() pure virtual function, which is declared final (i.e., non-overridable in derived classes) and which itself calls a pure virtual getNext_() function to be implemented in derived classes.

State-machine related interface functions will be called only from a single thread. getNext() will be called only from a single thread. The thread from which state-machine interfaces functions are called may be a different thread from the one that calls getNext().

John F., 3/24/14

After some discussion with Kurt, CommandableFragmentGenerator has been updated such that it now contains a member vector fragment_ids_ ; if "fragment_id" is set in the FHiCL document controlling a class derived from CommandableFragmentGenerator, fragment_ids_ will be booked as a length-1 vector, and the value in this vector will be returned by fragment_id(). fragment_id() will throw an exception if the length of the vector isn't 1. If "fragment_ids" is set in the FHiCL document, then fragment_ids_ is filled with the values in the list which "fragment_ids" refers to, otherwise it is set to the empty vector (this is what should happen if the user sets the "fragment_id" variable in the FHiCL document, otherwise exceptions will end up thrown due to the logical conflict). If neither "fragment_id" nor "fragment_ids" is set in the FHiCL document, writers of classes derived from this one will be expected to override the virtual fragmentIDs() function with their own code (the CompositeDriver class is an example of this)

Definition at line 83 of file CommandableFragmentGenerator.hh.

Constructor & Destructor Documentation

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

CommandableFragmentGenerator Constructor.

Parameters
psParameterSet used to configure CommandableFragmentGenerator. See artdaq::CommandableFragmentGenerator::Config.

Definition at line 46 of file CommandableFragmentGenerator.cc.

artdaq::CommandableFragmentGenerator::~CommandableFragmentGenerator ( )
virtual

CommandableFragmentGenerator Destructor.

Joins all threads before returning

Definition at line 140 of file CommandableFragmentGenerator.cc.

Member Function Documentation

bool artdaq::CommandableFragmentGenerator::applyRequests ( artdaq::FragmentPtrs frags)

See if any requests have been received, and add the corresponding data Fragment objects to the output list.

Parameters
[out]fragslist of FragmentPtr objects ready for transmission
Returns
True if not stopped

Definition at line 1014 of file CommandableFragmentGenerator.cc.

void artdaq::CommandableFragmentGenerator::applyRequestsBufferMode ( artdaq::FragmentPtrs frags)

Create fragments using data buffer for request mode Buffer. Precondition: dataBufferMutex_ and request_mutex_ are locked

Parameters
fragsOuput fragments

Definition at line 855 of file CommandableFragmentGenerator.cc.

void artdaq::CommandableFragmentGenerator::applyRequestsIgnoredMode ( artdaq::FragmentPtrs frags)

Create fragments using data buffer for request mode Ignored. Precondition: dataBufferMutex_ and request_mutex_ are locked

Parameters
fragsOuput fragments

Definition at line 801 of file CommandableFragmentGenerator.cc.

void artdaq::CommandableFragmentGenerator::applyRequestsSingleMode ( artdaq::FragmentPtrs frags)

Create fragments using data buffer for request mode Single. Precondition: dataBufferMutex_ and request_mutex_ are locked

Parameters
fragsOuput fragments

Definition at line 814 of file CommandableFragmentGenerator.cc.

void artdaq::CommandableFragmentGenerator::applyRequestsWindowMode ( artdaq::FragmentPtrs frags)

Create fragments using data buffer for request mode Window. Precondition: dataBufferMutex_ and request_mutex_ are locked

Parameters
fragsOuput fragments

Definition at line 971 of file CommandableFragmentGenerator.cc.

int artdaq::CommandableFragmentGenerator::board_id ( ) const
inlineprotected

Gets the current board_id.

Returns
The current board_id

Definition at line 478 of file CommandableFragmentGenerator.hh.

bool artdaq::CommandableFragmentGenerator::check_stop ( )
protected

Routine used by applyRequests to make sure that all outstanding requests have been fulfilled before returning.

Returns
The logical AND of should_stop, mode is not Ignored, and requests list size equal to 0

Definition at line 283 of file CommandableFragmentGenerator.cc.

bool artdaq::CommandableFragmentGenerator::checkHWStatus_ ( )
protectedvirtual

Check any relavent hardware status registers. Return false if an error condition exists that should halt data-taking. This function should probably make MetricManager calls.

Returns
False if a condition exists that should halt all data-taking, true otherwise

Reimplemented in artdaqtest::CommandableFragmentGeneratorTest.

Definition at line 469 of file CommandableFragmentGenerator.cc.

void artdaq::CommandableFragmentGenerator::checkSentWindows ( Fragment::sequence_id_t  seq)

Check the windows_sent_ooo_ map for sequence IDs that may be removed.

Parameters
seqSequence ID of current window

Definition at line 1119 of file CommandableFragmentGenerator.cc.

bool artdaq::CommandableFragmentGenerator::dataBufferIsTooLarge ( Fragment::fragment_id_t  id)

Test the configured constraints on the data buffer.

Returns
Whether the data buffer is full

Definition at line 711 of file CommandableFragmentGenerator.cc.

size_t artdaq::CommandableFragmentGenerator::ev_counter ( ) const
inline

Get the current value of the event counter.

Returns
The current value of the event counter

Definition at line 314 of file CommandableFragmentGenerator.hh.

size_t artdaq::CommandableFragmentGenerator::ev_counter_inc ( size_t  step = 1,
bool  force = false 
)
protected

Increment the event counter, if the current RequestMode allows it.

Parameters
stepAmount to increment the event counter by
forceForce incrementing the event Counter
Returns
The previous value of the event counter

Definition at line 296 of file CommandableFragmentGenerator.cc.

bool artdaq::CommandableFragmentGenerator::exception ( ) const
inline

Get the current value of the exception flag.

Returns
The current value of the exception flag

Definition at line 415 of file CommandableFragmentGenerator.hh.

std::vector<Fragment::fragment_id_t> artdaq::CommandableFragmentGenerator::fragmentIDs ( )
inlineoverridevirtual

Get the list of Fragment IDs handled by this CommandableFragmentGenerator.

Returns
A std::vector<Fragment::fragment_id_t> containing the Fragment IDs handled by this CommandableFragmentGenerator

Implements artdaq::FragmentGenerator.

Definition at line 298 of file CommandableFragmentGenerator.hh.

void artdaq::CommandableFragmentGenerator::getDataBufferStats ( Fragment::fragment_id_t  id)

Calculate the size of the dataBuffer and report appropriate metrics.

dataBufferMutex must be owned by the calling thread!

Definition at line 719 of file CommandableFragmentGenerator.cc.

bool artdaq::CommandableFragmentGenerator::getNext ( FragmentPtrs output)
finaloverridevirtual

getNext calls either applyRequests or getNext_ to get any data that is ready to be sent to the EventBuilders

Parameters
outputFragmentPtrs object containing Fragments ready for transmission
Returns
Whether getNext completed without exceptions

Implements artdaq::FragmentGenerator.

Definition at line 157 of file CommandableFragmentGenerator.cc.

virtual bool artdaq::CommandableFragmentGenerator::getNext_ ( FragmentPtrs output)
protectedpure virtual

Obtain the next group of Fragments, if any are available. Return false if readout cannot continue, if we are 'stopped', or if we are not running in state-machine mode. Note that getNext_() must return n of each fragmentID declared by fragmentIDs_().

Parameters
outputReference to list of Fragment pointers to which additional Fragments should be added
Returns
True if readout should continue, false otherwise

Implemented in artdaqtest::CommandableFragmentGeneratorTest.

void artdaq::CommandableFragmentGenerator::joinThreads ( )

Join any data-taking threads. Should be called when destructing CommandableFragmentGenerator.

Join any data-taking threads. Should be called when destructing CommandableFragmentGenerator Sets flags so that threads stop operations.

Definition at line 146 of file CommandableFragmentGenerator.cc.

bool artdaq::CommandableFragmentGenerator::metaCommand ( std::string const &  command,
std::string const &  arg 
)
virtual

The meta-command is used for implementing user-specific commands in a CommandableFragmentGenerator.

Parameters
commandName of the command to run
argArgument(s) for command
Returns
true if command succeeded or if command not supported

Definition at line 475 of file CommandableFragmentGenerator.cc.

virtual std::string artdaq::CommandableFragmentGenerator::metricsReportingInstanceName ( ) const
inlinevirtual

Get the name used when reporting metrics.

Returns
The name used when reporting metrics

Definition at line 390 of file CommandableFragmentGenerator.hh.

void artdaq::CommandableFragmentGenerator::metricsReportingInstanceName ( std::string const &  name)
inlineprotected

Sets the name for metrics reporting.

Parameters
nameThe new name for metrics reporting

Definition at line 498 of file CommandableFragmentGenerator.hh.

void artdaq::CommandableFragmentGenerator::pause ( )
protectedvirtual

If a CommandableFragmentGenerator subclass is reading from hardware, the implementation of pause() should tell the hardware to stop sending data.

Reimplemented in artdaqtest::CommandableFragmentGeneratorTest, and artdaq::CompositeDriver.

Definition at line 447 of file CommandableFragmentGenerator.cc.

void artdaq::CommandableFragmentGenerator::PauseCmd ( uint64_t  timeout,
uint64_t  timestamp 
)

Pause the CommandableFragmentGenerator.

Parameters
timeoutTimeout for transition
timestampTimestamp of transition

A call to PauseCmd() is advisory. It is an indication that the BoardReader should stop the incoming flow of data, if it can do so.

Definition at line 367 of file CommandableFragmentGenerator.cc.

void artdaq::CommandableFragmentGenerator::pauseNoMutex ( )
protectedvirtual

On call to PauseCmd, pauseNoMutex() is called prior to PauseCmd acquiring the mutex

Definition at line 442 of file CommandableFragmentGenerator.cc.

std::string artdaq::CommandableFragmentGenerator::printMode_ ( )
protected

Return the string representation of the current RequestMode.

Returns
The string representation of the current RequestMode

Definition at line 511 of file CommandableFragmentGenerator.cc.

std::string artdaq::CommandableFragmentGenerator::report ( )
protectedvirtual

Let's say that the contract with the report() functions is that they return a non-empty string if they have something useful to report, but if they don't know how to handle a given request, they simply return an empty string and the ReportCmd() takes care of saying "the xyz command is not currently supported". For backward compatibility, we keep the report function that takes no arguments and add one that takes a "which" argument. In the ReportCmd function, we'll call the more specific one first.

Returns
Default report from the FragmentGenerator

Definition at line 457 of file CommandableFragmentGenerator.cc.

std::string artdaq::CommandableFragmentGenerator::ReportCmd ( std::string const &  which = "")

Get a report about a user-specified run-time quantity.

Parameters
whichWhich quantity to report
Returns
The report about the specified quantity

CommandableFragmentGenerator only implements "latest_exception", a report on the last exception received. However, child classes can override the reportSpecific function to provide additional reports.

Definition at line 409 of file CommandableFragmentGenerator.cc.

std::string artdaq::CommandableFragmentGenerator::reportSpecific ( std::string const &  what)
protectedvirtual

Report the status of a specific quantity

Parameters
whatName of the quantity to report
Returns
Value of requested quantity. Null string if what is unsupported.

Definition at line 463 of file CommandableFragmentGenerator.cc.

RequestMode artdaq::CommandableFragmentGenerator::request_mode ( ) const
inline

Get the current request mode of the CommandableFragmentGenerator

Returns
Current RequestMode of the CFG

Definition at line 320 of file CommandableFragmentGenerator.hh.

void artdaq::CommandableFragmentGenerator::resume ( )
protectedvirtual

The subrun number will be incremented before a call to resume.

Reimplemented in artdaqtest::CommandableFragmentGeneratorTest, and artdaq::CompositeDriver.

Definition at line 452 of file CommandableFragmentGenerator.cc.

void artdaq::CommandableFragmentGenerator::ResumeCmd ( uint64_t  timeout,
uint64_t  timestamp 
)

Resume the CommandableFragmentGenerator.

Parameters
timeoutTimeout for transition
timestampTimestamp of transition

After a call to ResumeCmd(), the next Fragments returned from getNext() will be part of a new SubRun.

Definition at line 381 of file CommandableFragmentGenerator.cc.

int artdaq::CommandableFragmentGenerator::run_number ( ) const
inlineprotected

Get the current Run number.

Returns
The current Run number

Definition at line 440 of file CommandableFragmentGenerator.hh.

bool artdaq::CommandableFragmentGenerator::sendEmptyFragment ( artdaq::FragmentPtrs frags,
size_t  sequenceId,
Fragment::fragment_id_t  fragmentId,
std::string  desc 
)

Send an EmptyFragmentType Fragment.

Parameters
[out]fragsOutput list to append EmptyFragmentType to
sequenceIdSequence ID of Empty Fragment
fragmentIdFragment ID of Empty Fragment
descMessage to log with reasoning for sending Empty Fragment
Returns
True if no exceptions

Definition at line 1092 of file CommandableFragmentGenerator.cc.

void artdaq::CommandableFragmentGenerator::sendEmptyFragments ( artdaq::FragmentPtrs frags,
std::map< Fragment::sequence_id_t, Fragment::timestamp_t > &  requests 
)

This function is for Buffered and Single request modes, as they can only respond to one data request at a time If the request message seqID > ev_counter, simply send empties until they're equal.

Parameters
[out]fragsOutput list to append EmptyFragmentType to
requestsList of requests to process

Definition at line 1103 of file CommandableFragmentGenerator.cc.

void artdaq::CommandableFragmentGenerator::set_exception ( bool  exception)
inlineprotected

Control the exception flag.

Parameters
exceptionWhether an excpetion has occurred

Definition at line 492 of file CommandableFragmentGenerator.hh.

bool artdaq::CommandableFragmentGenerator::should_stop ( ) const
inlineprotected

Get the current value of the should_stop flag.

Returns
The current value of the should_stop flag

Definition at line 466 of file CommandableFragmentGenerator.hh.

virtual void artdaq::CommandableFragmentGenerator::start ( )
protectedpure virtual

If a CommandableFragmentGenerator subclass is reading from a file, and start() is called, any run-, subrun-, and event-numbers in the data read from the file must be over-written by the specified run number, etc. After a call to StartCmd(), and until a call to StopCmd(), getNext_() is expected to return true as long as datataking is intended.

This is a pure virtual function, and must be overriden by Fragment Generator implementations

Implemented in artdaqtest::CommandableFragmentGeneratorTest, and artdaq::CompositeDriver.

void artdaq::CommandableFragmentGenerator::StartCmd ( int  run,
uint64_t  timeout,
uint64_t  timestamp 
)

Start the CommandableFragmentGenerator.

Parameters
runRun ID of the new run
timeoutTimeout for transition
timestampTimestamp of transition

After a call to 'StartCmd', all Fragments returned by getNext() will be marked as part of a Run with the given run number, and with subrun number 1. Calling StartCmd also resets the event number to 1. After a call to StartCmd(), and until a call to StopCmd, getNext() – and hence the virtual function it calls, getNext_() – should return true as long as datataking is meant to take place, even if a particular call returns no fragments.

Definition at line 306 of file CommandableFragmentGenerator.cc.

virtual void artdaq::CommandableFragmentGenerator::stop ( )
protectedpure virtual

If a CommandableFragmentGenerator subclass is reading from a file, calling stop() should arrange that the next call to getNext_() returns false, rather than allowing getNext_() to read to the end of the file.

This is a pure virtual function, and must be overriden by Fragment Generator implementations

Implemented in artdaqtest::CommandableFragmentGeneratorTest, and artdaq::CompositeDriver.

void artdaq::CommandableFragmentGenerator::StopCmd ( uint64_t  timeout,
uint64_t  timestamp 
)

Stop the CommandableFragmentGenerator.

Parameters
timeoutTimeout for transition
timestampTimestamp of transition

After a call to StopCmd(), getNext() will eventually return false. This may not happen for several calls, if the implementation has data to be 'drained' from the system.

Definition at line 346 of file CommandableFragmentGenerator.cc.

virtual void artdaq::CommandableFragmentGenerator::stopNoMutex ( )
protectedpure virtual

On call to StopCmd, stopNoMutex() is called prior to StopCmd acquiring the mutex

This is a pure virtual function, and must be overriden by Fragment Generator implementations

Implemented in artdaqtest::CommandableFragmentGeneratorTest, and artdaq::CompositeDriver.

int artdaq::CommandableFragmentGenerator::subrun_number ( ) const
inlineprotected

Get the current Subrun number.

Returns
The current Subrun number

Definition at line 445 of file CommandableFragmentGenerator.hh.

uint64_t artdaq::CommandableFragmentGenerator::timeout ( ) const
inlineprotected

Timeout of last command.

Returns
Timeout of last command

Definition at line 450 of file CommandableFragmentGenerator.hh.

uint64_t artdaq::CommandableFragmentGenerator::timestamp ( ) const
inlineprotected

Timestamp of last command.

Returns
Timestamp of last command

Definition at line 455 of file CommandableFragmentGenerator.hh.

bool artdaq::CommandableFragmentGenerator::waitForDataBufferReady ( Fragment::fragment_id_t  id)

Wait for the data buffer to drain (dataBufferIsTooLarge returns false), periodically reporting status.

Returns
True if wait ended without something else disrupting the run

Definition at line 640 of file CommandableFragmentGenerator.cc.


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